angular 1.x 项目总结

当年第一个项目使用angular 1.46做的,在这里记录一下, 免得忘了

结构
- common
	- appConfig    //  处理自定义路由格式 
	- stateConfig    // 与SEP平台对接, 中间件控制器 -> 前端路由 
	- menuConfig.js  // 菜单配置
	
- config 
	- quality-analysis
		- config.js
		- view.html
	- health
	- service-warning
	- ...
	- ...
	- // 所有业务(页面)目录 

	
- router
	- routerConfig.js // 路由 


- controller
	- indexController.js
	- baseController.js 


- views
	- documents // 帮助文档(每个页面的)  
	- templates
	 	- layouts  // 页面布局
	 	- subLayouts // 子布局


- directives  
	- comCharts001.js
	- comCharts002.js
	- comTable001.js
	- ...
	- ...
	- // 所有组件


- services 
	- httpService.js  // 请求模块
	- layoutService.js  // 处理模板
	- componentService.js  // 处理组件
	- dataService.js  // 处理数据源
	- excelService.js  // 处理前端生成excel
	- ...
	- ...
	- ...


- themes
	- css


- lib
	- angular-ui-router.js // 路由
	- tinyui  // 集成了angular / 以及UI组件
	- require.js 

- assets
	- images
	- svgs

- main.js  // 入口
- app.js 
- index.html // 入口

流程
=> index.html  

=> main.js
	 -> 全局变量
	 -> 鉴权 / 获取地图数据 
	 -> angular.brootstrap() 挂载元素 
	 
=> app.js
	-> app = angular.mudule() 定义主模块
	-> app.services() 定义services
	-> app.filter() 定义过滤器
	-> app.controller(index) 定义主控制器
	
=> appConfig.js
	-> 将 routerConfig 中的路由配置处理为angular-ui-router格式
	-> 引入菜单
	
=> 打开某路由

=> baseController.js
	-> 读取config文件夹中的业务配置
	-> 定义顶层事件分发, 监听所有子级控制器的消息传播, 并转发 
	-> 通过	 layoutService.js ,componentService.js , dataService.js  // 分别处理布局/组件/数据源, 生成页面控制器
	-> 定义includes字段以引入公共模板

=> config文件夹
	-> 页面生成通过ng-includes
问题

开发中还是遇到了很多问题的:

  1. 一个页面通过多个html使用ng-includes层层嵌套, 看似可复用, 实际上没有webpack.gulp等支持, 会产生大量零件碎片, 严重拖慢加载速度
  2. 组件组织方式均写到directives, 并且内部耦合太重, 稍微的功能不符合, 便需要重新写一个类似的
  3. config文件存在大量的重复代码, 影响代码重复率检测
  4. 没有全局数据流管理, 两个控制器通信过分依赖baseController顶层, 导致baseController本为公共, 却写了大量if else特殊判断
  5. 类似弹窗这种组件, 不是一对多的, 而是重复写了非常多遍, 导致加载特慢
解决?
  • 第一个问题, 后续不再使用html拼接的形式, 而是将模板写到一个view.html中
  • 增加按需加载组件, 而不是上来就把directives全定义一遍
  • 将弹窗改写为共用的容器
  • 引入gulp对代码进行压缩混淆, 但是angular的依赖注入有很多坑, 需要特殊的插件处理
结果

经过一番折腾后, 性能稍微有些提升, 但是总体还是不理想
最后的解决方法是重构
既然要重构, 干脆直接抛弃了 angular 1, 转而投向了 vue 全家桶

通信方式
  • $emit() , $broadcast()
  • angular.element().scope()
  • $parent , $childHead
  • 公用service
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Angular Intro.js 是一个 AngularJS 模块,用于集成 Intro.js 库,以提供网站或应用程序的新手引导和演示。下面是使用步骤: 1. 安装 Angular Intro.js:通过 npm 安装 Angular Intro.js 模块。 ``` npm install angular-intro.js --save ``` 2. 引入 Intro.js 库:在项目中引入 Intro.js 库,可以通过 npm 安装或直接使用 CDN 引入。 ``` <script src="https://cdnjs.cloudflare.com/ajax/libs/intro.js/2.9.3/intro.min.js"></script> ``` 3. 引入 Angular Intro.js 模块:在 AngularJS 应用程序中引入 Angular Intro.js 模块。 ``` angular.module('myApp', ['angular-intro']); ``` 4. 在 HTML 中使用:在 HTML 中使用指令来添加新手引导和演示。 ``` <div introjs intro-options="options"> <p>这是一个新手引导示例</p> <button ng-click="showStep2()">下一步</button> </div> ``` 上面的代码中,`introjs` 指令告诉 Angular Intro.js 应该在这个元素上启用引导,`intro-options` 属性包含 Intro.js 配置选项,`showStep2()` 是一个 AngularJS 控制器中的函数,用于显示下一个步骤。 5. 在控制器中配置选项和方法:在 AngularJS 控制器中配置 Intro.js 选项和方法。 ``` angular.module('myApp').controller('myCtrl', function($scope) { $scope.options = { steps: [ { element: document.querySelector('#step1'), intro: '这是第一步' }, { element: document.querySelector('#step2'), intro: '这是第二步' } ] }; $scope.showStep2 = function() { introJs().goToStep(2).start(); }; }); ``` 上面的代码中,`steps` 选项包含 Intro.js 步骤对象,每个步骤是一个包含 `element` 和 `intro` 属性的对象。`showStep2()` 函数使用 Intro.js 方法来显示第二步。 以上是 Angular Intro.js 的简单使用方法,可以根据需要进行配置和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值