需求来源

之前使用jspm来打包项目 但是有个最大的缺点,就是只能把项目打包成一个大的js,当项目开发到后期会很大,网上找了很久也没找到合理的jspm打包方式。 所以开始调研可以打包angular项目成多个文件的工具.

调研过程

过程中看了些 vue,react配合webpack按路由功能打包的demo,感觉webpack对于打包成多个文件比较擅长。

结果

第一步 核心模块依赖加载

#core.module.js //核心模块import 'angular-route'; //官方路由依赖
import 'oclazyLoad' //angular异步加载依赖
import CoreRouter from './core.router'
import LoginModule from '../states/login/login.module' //登入模块定义jsexport default angular.module('xxx.bg',['ngRoute', 'oc.lazyLoad', LoginModule.name,
])
.config(CoreRouter) //主要是路由配置文件

第二步 路由配置

#core.router.js //这里不是重点,只是一般的配置import LoginRouter from '../states/login/login.route' //登入路由定义js function CoreRouter($routeProvider) {$routeProvider.when('/login',LoginRouter).otherwise({redirectTo: '/login'});
}CoreRouter.$inject = ['$routeProvider'];export default CoreRouter;

第三步 异步请求路由控制器的js

#login.route.js //最重要的操作都在这里import LoginTpl from './login.tpl.html' //模板 用webpack的raw-loader加载成文本字符串,具体配置看let LoginRoute = {template    :   LoginTpl,controller  :  'LoginCtrl',  //这里只是写了一个字符串resolve: {load: ['$q','$ocLazyLoad',function ($q,$ocLazyLoad) {return $q((resolve) => {//下面这一行写法是webpack在需要的时候才下载依赖的模块,[具体看这里][2]require.ensure([], () => {//这里只是依赖了一个控制器文件,但是这个文件里面你可以import很多其他的依赖let module = require('./login.controller'); //加载模块名为xxx.bg.login的模块,具体是什么作用没弄明白,请高手解答$ocLazyLoad.load({name: 'xxx.bg.login'}); //promise 的成功回调,不返回出去参数也没关系,因为在login.contorller.js里面已经注册了LoginCtrlresolve(module.controller); });});}]}
};
export default LoginRoute;

其他文件

#login.module.jsexport default angular.module('xxx.bg.login',[]);
#login.controller.js //这就是第三步异步请求的js webpack会把这个js和它依赖到的js打包成一个jsimport './login.module'
import '../../../lib/echarts/echarts.min' //随便引入了一个百度图表 比较大的js 超过100K webpack会报警,需要在配置中设置export default angular.module('xxx.bg.login')//注册控制器.controller('LoginCtrl',['$rootScope',function($rootScope){$rootScope.theme = {name:'login-page'};}])
#webpack.config.js
var path = require('path')
module.exports = {entry: './source/com.xxx.bg/main.js', //项目入口文件output: {path: './dist/public',publicPath: './public/',filename: 'bundle.js'},resolve: {extensions: ['', '.js'],alias: {'src': path.resolve(__dirname, '../source')}},resolveLoader: {root: path.join(__dirname, 'node_modules'),},module: {loaders: [{test: /\.js$/,exclude: /node_modules|lib/,loader: 'babel-loader?stage=0',query: {compact: false}},{test: /\.html$/,exclude: /node_modules/,loader: 'raw-loader?stage=0'}]}
};

es6+angular1.X+webpack 实现按路由功能打包项目相关推荐

  1. vue学习2,webpack,组件,路由

    一.vue指令v-for 准备vue对象,data数据 <script>new Vue({el:"#lr",data:{likes:["唱",&qu ...

  2. Vue 增加动态路由功能 【在原有系统上增加】

    目录 遇到问题 1. 修改router/index.js 2. 修改 store文件夹下的 2.1 增加 modules/permission.js 2.2 增加modules/tagsViews.j ...

  3. 开发函数计算的正确姿势——支持 ES6 语法和 webpack 压缩

    为什么80%的码农都做不了架构师?>>>    首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算 ...

  4. 前端工程化(ES6模块化和webpack打包)

    文章目录 目标: 目录: 1.模块化相关规范 1.1.模块化概述 1.2.浏览器端模块化规范 AMD CMD 1.3.服务器端模块化规范 CommonJS 1.4.大一统的模块化规范-ES6模块化 1 ...

  5. Vue ES6 Jade Scss Webpack Gulp

    一直以来非常庆幸曾经有翻过<代码大全2>:这使我崎岖编程之路少了很多不必要的坎坷.它在软件工艺的话题中有写到一篇:"首先是为人写程序,其次才是机器(Write Programs ...

  6. 桥接路由器总是掉线_光猫集成了路由功能,路由器的路由功能会多余吗?

    答案是不多余. 首先,光猫与路由器的作用是大不相同的,光猫主要是信号转换,把光信号转换成数字信号:而路由器最主要的功能是进行网络信号的传输和分发,读取每一个数据包中的地址然后决定如何传送Wi-Fi信号 ...

  7. 三层交换(VLAN间互通+路由功能)+VTP+STP(PVST)综合实验(理论+实践=真实)

      三层交换(VLAN间互通+路由功能)+VTP+STP(PVST) 综合实验(理论+实践=经验)     [需求分析] 本实验采用双核心结构,将三层交换技术和VTP.STP.以太网通道综合一起,实现 ...

  8. rabbitmq python_Python操作RabbitMQ服务器实现消息队列的路由功能

    Python使用Pika库(安装:sudo pip install pika)可以操作RabbitMQ消息队列服务器(安装:sudo apt-get install rabbitmq-server), ...

  9. Windows server 2012 之路由功能

    今天给大家介绍的是Windows服务器的软路由功能,那么什么事软路由呢? 软路由:就是将Windows 系统配置成一个路由器 下面我们通过一个示例来给大家介绍软路由 先说一下实验环境,三台服务器,se ...

最新文章

  1. 【BZOJ 2721】 2721: [Violet 5]樱花 (筛)
  2. Win下更新pip出现OSError:[WinError17]与PerrmissionError:[WinError5]及解决
  3. html播放七牛云视频,直传七牛云视频播放商业版【价值199元】
  4. Javascript下拉刷新
  5. Arcgis javascript那些事儿(十七)——地理编码服务的发布与使用
  6. PostgreSQL 数据离散性 与 索引扫描性能(btree and bitmap index scan)
  7. 110 redis的哨兵集群 redis-cluster docker安装
  8. IDEA+Java控制台实现商品管理系统
  9. Node.js安装详细步骤教程(Windows版)
  10. Unity判断目标在哪个方向
  11. 分析器错误信息 未能加载类型 命名空间 类 ---小结
  12. java 消息总线 框架_JavaWeb 消息总线框架 Saka V0.0.1 发布
  13. 将HEX文件通过Keil软件进行下载
  14. java BufferedImage 转base64
  15. 翻译:数据页面和数据行
  16. PotPlayer不支持S/W HEVC(H.265)解码的解决方法
  17. Deepspeed:让大规模深度学习更快更省资源的神器
  18. matlab算地形坡度,自然地形坡度分析、坡向分析的作用
  19. 翻译软件哪个准确度高
  20. 计算信号波形上升时间下降时间算法软件(Labview版)

热门文章

  1. 使用QHttp与C#编写的服务端交互(编译环境mingw)
  2. 去认识一下WCDMA中的SCH信道
  3. 微服务升级_SpringCloud Alibaba工作笔记0015---Nacos安装
  4. STM32工作笔记0089---UCOSIII存储管理
  5. C#.Net工作笔记010---c#中的静态扩展方法_可动态给string等_添加共通方法好用
  6. 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单
  7. 云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin
  8. 招一个写代码的女生:国外女程序员是什么样的
  9. bz10451045: [HAOI2008] 糖果传递
  10. 嵌入式电路设计(物联网esp32最小电路设计)