使用angular1.4, es2015, webpack, angular-material来搭建一个app
介绍了如何用webpack构建ng1+es6应用, 原文: Creating an application with AngularJS 1.4, ECMAScript 6, Material Design and Webpack
来学一下如何用ng1.4, es6, material design和webpack来做一个应用吧!
angular1.4发布了.(现在1.x的最后版本是1.5.8, 1.5.9好像僵死在了beta).
现在要介绍一个新的路由: 一个由Pascal Percht开发的类似于angular-translate的转换系统, 加强了webpack, 没有‘劫持’的Browserify支持(CommonJS)(Browserify就是在web应用里可以像node一样require lib的一个lib). 你可以像这样直接import angular:
1 | import 'angular/angular.js'; |
而不是这样:
1 | require('expose?angular!exports?window.angular!angular/angular.js'); |
DEMO
基本配置
依赖(package.json)
这个教程里我们会使用AngularJS
,Angular Material
,UI router
(一个还没能可以上生产的路由)(其实现在早可以上了, 这文章在一年前, 作者眼光真是厉害)和icon library
.
1 | "dependencies": { |
Webpack
如果你想知道webpack是干嘛的, 我建议你看我的上篇博客.
我们要让webpack的加载器去编译es6并处理css和html文件.
1 | "devDependencies": { |
webpack.config.js
也是不能再简单了:
1 | module.exports = { |
入口文件(lib/index.js)
下面这个入口文件集合了我们应用的所有基本依赖的库: Angular, Material Design, 路由和icon.
我们用import
这个es6的引入CommonJS模块的语法, 注入了angularMaterial
和angularUIRouter
作为模块依赖并输出默认模块.
(你可以在单个文件输出多个模块, 如果没指定import那么获取到的就是默认模块.)
1 | // Import angular |
index.html
index.html要做2件事. 一个是启动应用(就是ng-app="demo"
), 另外是引入js文件.(src="{\%=o.htmlWebpackPlugin.assets[chunk]\%}"
).
1 |
|
你现在应该已经让你的demo
模块运行了. 为确信他已经运行让我们在入口文件添加一个打log的代码吧:
1 | demoModule.run(($log) => { |
然后看一下控制台!
继续
创建你自己的模块
你的应用已经运行了, 我们来用es6创建一个home模块吧!
1 | // Create a new module |
和别的模块一样地注入:
1 | import home from './home/home.module.js'; |
我们建立一个controller./home/controller
来让我们新的模块引入:
1 | export default function($scope) { |
ngInject
是ng-annotate
的注释, 让angular可以进入严格模式, 预知详情可以复制以下链接http://julienrenaux.fr/2015/01/18/angularjs-1-x-open-source-projects-to-follow-in-2015/#Ng-Annotate
我们可以这样引入方法:
1 | let homeModule = angular.module('demo.home', []); |
DEMO地址
(本文完)
如果你觉得本文对你有帮助, 你可以请我喝一杯咖啡
本文遵循cc协议
你可以在注明出处和非商用的前提下任意复制及演绎