繁体   English   中英

Phonegap,AngularJS和RequireJS

[英]Phonegap, AngularJS and RequireJS

我正在尝试将AngularJS + RequireJS集成到一个Phonegap项目中。 我都在PC上运行,但是当我在Phonegap中构建项目时,LogCat中出现以下错误:

05-07 13:55:38.008:E / Web控制台(10987):未捕获的错误:脚本错误:角度05-07 13:55:38.008:E / Web控制台(10987): http ://requirejs.org/ docs / errors.html#scripterror at file:///android_asset/www/libs/require.js:138

05-07 13:55:45.058:E / Web控制台(10987):未捕获的错误:模块的加载超时:ui.router 05-07 13:55:45.058:E / Web控制台(10987): http:// requirejs .org / docs / errors.html#timeout at file:///android_asset/www/libs/require.js:138

Index.html

<script src="libs/require.js"></script>
<script>
  require(['require', './js/config-require'], function (require, config) {
    config.urlArgs = 'bust=v0.4.0';
    window.require.config(config);

    require(['./js/main.js']);
  });
</script>

config-require.js

define({
  paths: {
    'angular'       : '../libs/angular',
    'async'         : '../libs/async',
    'domReady'      : '../libs/domReady',
    'ngResource'    : '../libs/angular-resource',
    'ui.router'     : '../libs/angular-ui-router'
  },

  shim: {
    'angular': {
      'exports': 'angular'
    },
    'ngResource': ['angular'],
    'ui.router' : ['angular']
  }
});

main.js

define([
  'require',
  'angular',
  './app'
], function (require, angular) {
  'use strict';

  require(['domReady!'], function (document) {
    angular.bootstrap(document, ['app']);
  });
});

app.js

define([
  'angular',
  'ui.router',
  './config',
  './modules/home/index'
], function (ng) {
  'use strict';

  return ng.module('app', [
    'app.constants',
    'app.home',
    'ui.router'
  ]).config(['$urlRouterProvider', function ($urlRouterProvider) {
    $urlRouterProvider.otherwise('/');
  }]);

});

有人可以帮助我进行配置吗?

解决方案是在config-require.js文件中设置baseUrl

改用SeaJs + AngularJs

最近,我试图在cordova中实现requirejs。 我在这里浏览了大多数相关文章,但这些解决方案均无效。

因此,我尝试使用Seajs,Seajs遵循CommonJS Spec几乎与Nodejs一样。

Sea.js源代码中,将global.define = Module.define替换为seajs.define = Module.define隐藏全局define方法。

在index.html中

<script type="text/javascript" src="sea-debug.js"></script>
<script>
seajs.config({
    alias: {// similar to shim as in requirejs
    "angular": "lib/angular.js"
    }
});
seajs.use('app.js', function(app) {
    app();
});
</script>

在app.js中

seajs.define(function(require, exports, module) {
    module.exports = function() {
        require('angular');//angular is loaded, you can use angular directly
        var app = angular.module('App',[]);
        require('./test.js')();//test test test
    };
});

在test.js中

seajs.define(function(require, exports, module) {
    module.exports = function() {
        console.log('test test test');
    };
});

然后您就可以出发了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM