webpack工具链热替换 -- angularjs的粗放式实现
ng-hot-loader前言
实现目标
实现策略合理划分
/** * @description - application level router config. * @author bornkiller <hjj491229492@hotmail.com> */ 'use strict'; // layout module dependency import layoutAuthorizeTemplate from './authority/authorize.html'; import { AuthorizeController } from './authority/authorize.controller'; import layoutNavbarTemplate from './flow/navbar.html'; import layoutSidebarTemplate from './flow/sidebar.html'; import layoutCoreTemplate from './flow/core.html'; import { SidebarController } from './flow/sidebar.controller'; // layout module name const LAYOUT_MODULE = 'app.layout'; // layout module router const LayoutRoute = [ { name: 'authorize',url: '/authorize',views: { 'core': { template: layoutAuthorizeTemplate,controller: AuthorizeController,controllerAs: 'vm' } } },{ name: 'application',url: '/application',views: { 'navbar': { template: layoutNavbarTemplate },'sidebar': { template: layoutSidebarTemplate,controller: SidebarController,controllerAs: 'vm' },'core': { template: layoutCoreTemplate } } } ]; angular.module(LAYOUT_MODULE,[]) // eslint-disable-next-line angular/di .config(['$stateProvider',function ($stateProvider) { LayoutRoute.forEach((route) => { $stateProvider.state(route); }); }]); export { LAYOUT_MODULE }; 模块划分通过划分模块实现最终目标:
组件替换约定服务在 过滤器仅支持 模板热替换目前采用较为粗放的容器定位策略,基于最近的 指令热替换同样采用较为粗放的容器定位策略,通过路由模板替换实现。 控制器统一使用
HMR示例if (module.hot) { module.hot.accept(['${descriptor.location}'],function () { ${translateImportType(descriptor)} $hmr.hmrOnChange('${capitalize(descriptor.category)}','${descriptor.token}',${descriptor.name}); $hmr.hmrDoActive('${capitalize(descriptor.category)}',${descriptor.name}); }); }; 项目实现
TODO
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |