又一週過去了,項目也已經作得有點模樣了。收集來一些小經驗,分享給你們,有疏漏之處,還望指正,海涵。
上週整合了gulp與webpack,那麼工具準備差很少了,咱們就開始編碼吧。編碼的框架就是angular了(如今已經出了es6了,配合angular2其實很酷,有興趣的朋友們去玩嘍,這裏仍是angular1)。
從哪開始呢?對的,咱們要先有個angular。還要能讓webpack經過一句:html
require('angular');
完成導入。這樣的話我就先去官網下載了一個angular.js文件,而後在個人webpack的入口文件index.js裏這樣寫:java
require('./angular.js');
事實證實這樣寫是錯的。。。而後我就看網上的哥哥們怎麼寫,他們的代碼裏都是直接這樣:webpack
require('angular');
我就用npm來安裝了一個angulargit
npm install --save-dev angular
而後,我在index.js裏這樣寫:es6
var angular = require('angular');
var App = angular.module("App",[]);
ok,這樣就對了。那麼咱們接下來要給angular加個ui-router的插件。那就採用相同的辦法了:
首先要:github
npm install --save-dev angular-ui-router
而後:web
var angular = require('angular');
var uiRouter = require('angular-ui-router');
var App = angular.module("App",[uiRouter ]);
這樣沒有問題,能夠簡寫一下:npm
var angular = require('angular');
var App = angular.module("App",[
require('angular-ui-router')
]);
那麼咱們自定義的module要怎麼加入到App的依賴中去呢?咱們本身寫的又不能用npm去安裝。
假如我在index.js(webpack的入口文件)的同級目錄下,有個文件夾modules,裏邊放的是寫好的模塊文件如myModule.js,這是一次有益的嘗試:gulp
var angular = require('angular');
var App = angular.module("App",[
require('angular-ui-router'),
require('./modules/myModule.js')
]);
myModule.js的內容以下:ruby
var angular = require('angular');
/** * 這裏是***模塊 * @type {[type]} */
var myModule = angular.module('myModule', []);
myModule.controller('myModuleCtrl',function($scope,$http,$state,$stateParams) {
//這裏是controller的內容
});
這樣呢,又會報錯了。爲何呢?由於webpack導入的模塊要符合CMD或者AMD的規範,而這個module顯然是不符合的。關於規範:webpack教程與規範
那麼搞懂了這個規範的意思,那也就是說,咱們這個myModule應該這樣寫:
var angular = require('angular');
/** * 這裏是***模塊 * @type {[type]} */
var myModule = angular.module('myModule', []);
myModule.controller('myModuleCtrl',function($scope,$http,$state,$stateParams) {
//這裏是controller的內容
});
module.exports = myModule;
試了一下,仍是不行啊報這個錯:「module-is-not-a-function」,又去stackOverflow上查了一下:如何解決module is not a function 1 以及:如何解決module is not a function 2
原來是導出的時候加上.name,像這樣:
module.exports = myModule.name;
基本上能夠跑起來了。
這裏還有一個坑,已經填上了:unknow provider使用ngAnnotate來解決:ngAnnotate的git地址 好的,到此爲止,咱們已經能讓angular在webpack的環境下運行起來了。