带有 Angular 1.x 和 ES5 的 Webpack

Posted

技术标签:

【中文标题】带有 Angular 1.x 和 ES5 的 Webpack【英文标题】:Webpack with angular 1.x and ES5 【发布时间】:2016-02-01 02:55:27 【问题描述】:

在阅读了数百行关于 browserify 和 webpack 的内容以及两者中的几个方法之后,我决定使用 webpack。主要原因是我喜欢将所有内容捆绑到 js 文件中的想法。

我有一个 Angular 项目已经在运行,我想为 webpack 重构它。问题?我的项目使用 Angular 1.4.7、ng-animate 和纯 javascript (ES5),所有教程和手册都适用于 ES6。我不想过多地重构我的项目。怎么走?我想要每个角度模块的示例:工厂、指令、控制器等。非常感谢

【问题讨论】:

我也有同样的问题!目前我正在 Angular 1.x ES5 项目中工作,我无权将其重构为 es6 【参考方案1】:

我通常有一个 feature.module.js 文件,其中包含我的模块定义并需要模块中包含的所有指令/服务。也有外部依赖。

/* module.js */
angular.module('my.module',['dependancy1', 'dependancy2']);

//External libraries
require('./dependancy1.module.js');
require('./dependancy2.module.js');

//Internal components
require('./thing.directive');
require('./thing.service';
 

       
/* service.js */
angular.module('my.module')
    .directive('yourDir', function myDir()...);
                                           
                                           

【讨论】:

这似乎是一个很好的答案,但是我感觉它缺少一些细节,比如service.js是如何与module.js相关的,它是否使用了另一个require?您在主应用程序上需要哪一个?能否请您添加这些详细信息【参考方案2】:

我倾向于这样做:

app.js:

require('/any/angular/deps');
var subModule = require('/some/sub/module');

var app = angular.module('myApp', []);

// pass the app module in sub modules to allow them to define their own config
subModule.configure(app);

/subModule/module.js:

var someSubDirective = require('./subDir/directive');

export function configure(app) 

   someSubDirective.configure(app);


/subModule/subDir/directive.js:

export function configure(app) 
   app.directive('myDir', myDir);


function myDir() 


我的想法是让所有子模块处理自己的配置,因此声明configconstantfactoriesproviders。然后让它冒泡到 app.js。这意味着从你的结构中删除一个文件夹真的很容易,因为它是从它的父模块中删除一行。

这也使相关文件路径更短且更易于处理。

【讨论】:

删除是一行编辑,但要注意很多级联依赖。我认为 webpacks 将每个模块封装到一个闭包中,但我不太喜欢使用 app=angular.module(... 的想法而且我发现顶部的需求和底部的配置调用很麻烦。我不是在责怪你的解决方案,我觉得它很好,但我认为很容易错过一些要求或配置并让人头疼【参考方案3】:

我现在正在处理同样的问题。我发现了一些可行的方法(正在进行中,但至少我可以看到进展)。我的步骤:

    安装yeoman 运行this angular-webpack generator。询问时选择“ES5”(另一个选项是“ES2015”,我猜它与“ES6”相同) 开始使用您的 Angular 代码修改自动生成的样板文件

是的,你仍然需要学习 gulp 和 sass,但至少你可以使用旧的 ES5 语法运行一个简单的 AngularJS 应用程序,然后开始修改它。

我可能正在写博客。所以,我会更新这个答案。

【讨论】:

那篇博文还在制作中吗?

以上是关于带有 Angular 1.x 和 ES5 的 Webpack的主要内容,如果未能解决你的问题,请参考以下文章

Angular:在构建应用程序上获取两个主要块(重复块)

ES5 和 ES6 中的 Angular 2 依赖注入

将 ES5 JavaScript 用于 Angular 2 应用程序和使用 TypeScript 的优缺点是啥? [关闭]

Angular4 core.es5.js 使用类装饰器时需要未捕获的反射元数据填充程序

带有asp.net Web API后端的Angular 2 Web应用程序的实时通知[关闭]

Angular2嵌套路由父到子ES5不起作用