Как вы используете Webpack и AngularJS вместе, и как насчет загрузки шаблона и выборки по требованию?Какова наилучшая практика для импорта angularjs с помощью webpack?
Пример хорошо написанного файла webpack.config.js
для этой цели был бы очень признателен.
Все приведенные здесь фрагменты кода можно получить по адресу this github repo. Код был щедро адаптирован от this packetloop git repo.
webpack.config.json
var path = require('path');
var ResolverPlugin = require("webpack/lib/ResolverPlugin");
var config = {
context: __dirname,
entry: ['webpack/hot/dev-server', './app/app.js'],
output: {
path: './build',
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.css$/,
loader: "style!css-loader"
}, {
test: /\.scss$/,
loader: "style!css!sass?outputStyle=expanded"
}, {
test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$/,
loader: "file"
}, {
test: /\.html$/,
loader: "ngtemplate?relativeTo=" + path.join(__dirname, 'app/') + "!raw"
}]
},
// Let webpack know where the module folders are for bower and node_modules
// This lets you write things like - require('bower/<plugin>') anywhere in your code base
resolve: {
modulesDirectories: ['node_modules', 'lib/bower_components'],
alias: {
'npm': __dirname + '/node_modules',
'vendor': __dirname + '/app/vendor/',
'bower': __dirname + '/lib/bower_components'
}
},
plugins: [
// This is to help webpack know that it has to load the js file in bower.json#main
new ResolverPlugin(
new ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
};
module.exports = config;
Чтобы импортировать AngularJS в основной app.js
вы делаете следующее:
приложение/поставщик/angular.js
'use strict';
if (!global.window.angular) {
require('bower/angular/angular');
}
var angular = global.window.angular;
module.exports = angular;
И затем используйте его в app.js
, как и так,
app.js
...
var angular = require('vendor/angular');
// Declare app level module
var app = angular.module('myApp', []);
...
ли следующие правильно? Есть ли более простой способ сделать это? Я видел несколько (не много по стандартам) сообщений, в которых перечислялся другой метод.
// Add to webpack.config.js#module#loaders array
{
test: /[\/]angular\.js$/,
loader: "exports?angular"
}
Существует также еще один плагин, который находится в стадии разработки прямо сейчас, в stackfull/angular-seed. Кажется, это в правильном направлении, но сейчас действительно очень сложно использовать.
Webpack - это потрясающе, но отсутствие документации и образцов убивают его.
Угловая сам прекрасно работает из коробки с WebPack - 'вар угловые = требуют ('углового')'. Вы также можете потребовать, чтобы ваши модули имели свойство 'name' на каждом модуле -' var myModule = require ('./ myModule'); angular.module ('foo', [myModule.name]) '. Есть несколько исключений: ui router, являющийся заметным, не экспортирует объект модуля, а сам модуль. –
Это также может быть хорошим местом для начала. Это помогло мне. https://egghead.io/lessons/angularjs-angular-with-webpack-introduction – mgmcdermott
угловой не работает из коробки с синтаксисом: var angular = require ('angular') без вашего приложения/поставщика/angular.js , Если вы используете экспортный загрузчик и используете угловой, вы можете заставить его работать без вашего поставщика/angular.js. Также обратите внимание, что ваши зависимости должны быть зависимыми от npm. Зависимости Bower не будут работать с экспортным загрузчиком. – randominstanceOfLivingThing