在这里,我们将给大家分享关于Webpack和angularJs的知识,同时也会涉及到如何更有效地angular,webpack中的、angularjs–angular1.5组件模板webpackreq
在这里,我们将给大家分享关于Webpack和angularJs的知识,同时也会涉及到如何更有效地angular ,webpack 中的、angularjs – angular 1.5组件模板webpack require()导致错误、angularjs – Angular 2(4),Webpack站点将无法在IE 11中的服务器上运行、angularjs – angular.element($window).scrollTop()使用webpack抛出“不是函数”的内容。
本文目录一览:- Webpack和angularJs
- angular ,webpack 中的
- angularjs – angular 1.5组件模板webpack require()导致错误
- angularjs – Angular 2(4),Webpack站点将无法在IE 11中的服务器上运行
- angularjs – angular.element($window).scrollTop()使用webpack抛出“不是函数”
Webpack和angularJs
我正在尝试使用angularjs和webpack运行简单的应用程序,这是我的代码:
index.html
<html ng-app="myApp"> <head> <meta charset="utf-8"> </head> <body ng-controller="mainCtrl">Full Name: {{firstName + " " + lastName}} <script type="text/javascript" src="bundle.js" charset="utf-8"></script> </body></html>
app.js
var app = angular.module(''myApp'', []);function mainCtrl($scope) { $scope.firstName="John", $scope.lastName="Doe"}
Webpackconfig.js
module.exports = { entry: ''./main.js'', output: { filename: ''./bundle.js'' }};
main.js
var jquery = require("//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js");var angular = require("//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular.min.js");var app = require("./app.js");
bundle.js
?? I don''t know what i sholud write here !!
我也看到了这个:https :
//github.com/jeffling/angular-webpack-
example
问题是我如何正确运行?
答案1
小编典典bundle.js 由webpack生成,因此我认为您无需编写此文件。
Webpack配置文件的正确名称是webpack.config.js。使用此文件后,您可以在修改代码时使用webpack
或webpack--watch
继续编译捆绑文件来启动编译。
我创建了一个angular-index.js
将Angular包装为CommonJS模块。这是源代码:
require(''./angular.min.js'');module.exports = angular;
我已经将main.js
‘app.js’ 合并到一个文件中
var jquery = require(''jquery'');var angular = require(''./angular-index'');var myApp = angular.module(''myApp'', []);myApp.controller(''mainCtrl'', require(''./mainCtrl''));
最后,我添加了mainCtrl.js
。这只是控制器的功能定义。
module.exports = function($scope) { $scope.firstName = ''John''; $scope.lastName = ''Doe'';};
为了获得更好,更详细的说明,请阅读此博客文章https://blog.codecentric.de/en/2014/08/angularjs-
browserify/。我的工作代码在这里https://github.com/jean-rakotozafy/angular-webpack-
template
angular ,webpack 中的
问题:使用angular-cli搭建的项目,执行ng build后,浏览器打开空白,发现文件的路径不对
解决方案: 在package.json文件的scripts中添加命令:
"build":"ng build --base-href ./"
在以下为Angular Cli的各个配置中修改
"deployUrl": "//cdn.com.cn", // 指定站点的部署地址,该值最终会赋给webpack的output.publicPath,常用于CDN部署
在webpack中 output.publicPath
以下为Angular Cli的各个配置项说明。
{
"project": {
"name": "angular-questionare",
"ejected": false // 标记该应用是否已经执行过eject命令把webpack配置释放出来
},
"apps": [
{
"root": "src", // 源码根目录
"outDir": "dist", // 编译后的输出目录,默认是dist/
"assets": [ // 记录资源文件夹,构建时复制到`outDir`指定的目录
"assets",
"favicon.ico"
],
"index": "index.html", // 指定首页文件,默认值是"index.html"
"main": "main.ts", // 指定应用的入门文件
"polyfills": "polyfills.ts", // 指定polyfill文件
"test": "test.ts", // 指定测试入门文件
"tsconfig": "tsconfig.app.json", // 指定tsconfig文件
"testTsconfig": "tsconfig.spec.json", // 指定TypeScript单测脚本的tsconfig文件
"prefix": "app", // 使用`ng generate`命令时,自动为selector元数据的值添加的前缀名
"deployUrl": "//cdn.com.cn", // 指定站点的部署地址,该值最终会赋给webpack的output.publicPath,常用于CDN部署
"styles": [ // 引入全局样式,构建时会打包进来,常用语第三方库引入的样式
"styles.css"
],
"scripts": [ // 引入全局脚本,构建时会打包进来,常用语第三方库引入的脚本
],
"environmentSource": "environments/environment.ts", // 基础环境配置
"environments": { // 子环境配置文件
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"lint": [
{
"project": "src/tsconfig.app.json"
},
{
"project": "src/tsconfig.spec.json"
},
{
"project": "e2e/tsconfig.e2e.json"
}
],
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": { // 执行`ng generate`命令时的一些默认值
"styleExt": "css", // 默认生成的样式文件后缀名
"component": {
"flat": false, // 生成组件时是否新建文件夹包装组件文件,默认为false(即新建文件夹)
"spec": true, // 是否生成spec文件,默认为true
"inlineStyle": false, // 新建时是否使用内联样式,默认为false
"inlineTemplate": false, // 新建时是否使用内联模板,默认为false
"viewEncapsulation": "Emulated", // 指定生成的组件的元数据viewEncapsulation的默认值
"changeDetection": "OnPush", // 指定生成的组件的元数据changeDetection的默认值
}
}
}
angularjs – angular 1.5组件模板webpack require()导致错误
除组件的模板外,一切都按预期工作.
这有效
var cmpnt = { template: '<div>test</div>' }
这也有效(当我手动创建html文件时)
var cmpnt = { template: require('./component.html') }
这不起作用
var cmpnt = { template: require('./component.jade') }
在浏览器控制台中,我得到了
错误:[$injector:unpr]未知提供者:localsProvider< - locals .jade文件存在,我在应用程序的许多其他位置使用require(‘./ template.jade’)没有问题. 有任何想法吗?我可以提供更多信息吗?
解决方法
var cmpnt = { template: require('./component.jade')(); }
请注意require之后的函数调用
angularjs – Angular 2(4),Webpack站点将无法在IE 11中的服务器上运行
未处理的Promise拒绝:无法加载函数t(t){var e = this; this.http = t,this.getItems = function(){e.results = null,e.http.get(“api / app / components /my-items.component.html; Zone :;任务:Promise.then;值:无法加载函数t(t){var e = this; this.http = t,this.getItems = function(){e. results = null,e.http.get(“api / app / components / my-items.component.html undefined
对我来说意味着什么的唯一部分是’api /’是完全错误的,并且我已经仔细检查了组件,它清楚地说:
@Component({ selector: 'my-items',templateUrl: 'app/components/my-items.component.html' }) export class MyItemsComponent implements OnInit { ...
整个解决方案中没有出现短语’api / app'(包括c#,ts,css,html和js文件)
我的webpack.config.js很简单:
/// <binding ProjectOpened='Watch - Development' /> var path = require('path'); var webpack = require('webpack'); var console = require('console'); module.exports = { context: path.join(__dirname,'wwwroot'),//vendor: ['libs/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js'],entry: './app/main.js',output: { path: path.join(__dirname,'wwwroot/built'),filename: '[name].bundle.js',},plugins: [ //new webpack.optimize.CommonsChunkPlugin("vendor","vendor.bundle.js"),// split vendor js into its own file new webpack.optimize.CommonsChunkPlugin({ name: 'vendor',minChunks: function (module,count) { // any required modules inside node_modules are extracted to vendor var path = module.resource.replace(/\\/g,'/'); return (/\.js$/.test(path) && (path.indexOf('node_modules/') >= 0 || path.indexOf('libs/') >= 0)); } };
这里发生了什么?
解决方法
es6-shim.min.js system-polyfills.js shims_for_IE.js
前两个可以在node_modules中找到,我从here下载了第三个.
angularjs – angular.element($window).scrollTop()使用webpack抛出“不是函数”
旧工作代码:
app.directive("ajnav",['$window','$location',function ($window,$location) { return { restrict: "E",templateUrl: "/templates/common/AJNav.html",replace: true,scope: { SEO: '=',conf: '=' },link: function (scope,element,attrs) { //Bind event change the postion of AJ Nav on scroll var windowElement = angular.element($window); var onScrollHandler = function () { //Get current height of iNav. var iNavHeight = $("#iNavNGI_Header").height(); if (windowElement.scrollTop() > iNavHeight) { $(element).addClass('navbar-fixed-top'); $(element).removeClass('aj-nav-container-absolute'); } else { $(element).removeClass('navbar-fixed-top'); $(element).addClass('aj-nav-container-absolute'); } }; //Bind event handler on scroll windowElement.on('scroll',scope.$apply.bind(scope,onScrollHandler)); } }; }]);
使用webpack的新代码抛出错误:
var $= require("jquery"); var angular = require("angular"); var Utilities = require("./../../utilities/Utilities"); var AppUtilities = require("./../../utilities/AppUtilities"); module.exports = ['$window',attrs) { //Bind event change the postion of AJ Nav on scroll var windowElement = angular.element($window); var onScrollHandler = function () { //Get current height of iNav. var iNavHeight = $("#iNavNGI_Header").height(); if (windowElement.scrollTop() > iNavHeight) { $(element).addClass('navbar-fixed-top'); $(element).removeClass('aj-nav-container-absolute'); } else { $(element).removeClass('navbar-fixed-top'); $(element).addClass('aj-nav-container-absolute'); } }; //Bind event handler on scroll windowElement.on('scroll',onScrollHandler)); } }; }];
Follownig是我得到的异常的堆栈跟踪.
TypeError: windowElement.scrollTop is not a function at module.exports.link.onScrollHandler (site.min.js:42181) at Scope.$get.Scope.$eval (ite.min.js:25066) at Scope.$get.Scope.$apply (site.min.js:25165) at eventHandler (site.min.js:12594)
我在我的条目App.js中绑定了这个指令,如下所示
app.directive("ajnav",require("./directives/common/AJNav"));
我尝试了所有可能的选项,但无法修复它.请帮忙.
解决方法
侧注:你不必做$(元素),元素已经是jq(lite / query)包装,它已经有了add / removeClass函数.
关于Webpack和angularJs的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angular ,webpack 中的、angularjs – angular 1.5组件模板webpack require()导致错误、angularjs – Angular 2(4),Webpack站点将无法在IE 11中的服务器上运行、angularjs – angular.element($window).scrollTop()使用webpack抛出“不是函数”等相关知识的信息别忘了在本站进行查找喔。
本文标签: