gulp+webpack+angular1的一點小經驗(第二部分webpack包起來的angular1)

  又一週過去了,項目也已經作得有點模樣了。收集來一些小經驗,分享給你們,有疏漏之處,還望指正,海涵。
  上週整合了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的環境下運行起來了。   

相關文章
相關標籤/搜索