前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最近开发一个较复杂的单页应用的些许感想

最近开发一个较复杂的单页应用的些许感想

作者头像
前端GoGoGo
发布2018-08-27 10:07:12
4160
发布2018-08-27 10:07:12
举报

最近的工作在做一个单页应用的部分功能的升级。

该应用是所谓的前后端分离的: 前端,后端是两个项目。 启动项目时,前端只需起一个静态服务器,后端用命令行起即可。 前端负责页面输出。用了Angular.js,当然啦,路由也用的Angular提供的。后端提供接口。因为前,后端不在同一个域,所以,后端提供的接口的响应头都是 Access-Control-Allow-Origin: *的。

这是我做的第一次做单页应用,也是第一次在正式项目里用Angular,所以遇到了不少坑,记录如下

  • 页面切换时(非页面刷新,只是hash发生变化,ng-view里的内容根据路由进行更新),用jQuery抓取新页面的元素抓不到。有时候用setTimeout能搞定。或者如果只是给一些元素绑定事件,可以用事件委托。
  • 多次进入同一个页面,导致同一个js被多次执行导致的问题。因为页面没有刷新,事件委托的那元素上的事件会被绑定多次。解决方案是,绑事件前,先接触绑定事件。
  • Bootstrap 3弹出框 动态生成元素有时会出现幽灵的情况:元素生成好之后的元素,用jQuery也抓取不到那元素。。。
  • 页面有较大改动时,要改不少jQuery的选择元素的代码
  • 后端的接口调整或出问题后导致的一些问题。

做单页应用的一些总结

  • 尽量不要用jQuery做。用Angular来代替。其双向绑定,不依赖于页面结构
  • 尽量不要用事件委托,如果用,要在绑定事件前解除绑定来避免多绑。当然也有可能导致错绑其他页面的元素。因为单页应用的页面跳转并没有刷新页面
  • 前后端分离可采用,前后端均用相同的模板引擎。前端在开发时,请求的自己写的模拟的接口,而非后端真正的接口。模拟的接口和后端的接口的格式是一样的。

最后吐槽下,如果是做一个年代久远的大项目,往往意味着入坑:依赖的第三方组件的基本上不感升级的,因为不知道有哪些页面依赖它;充斥着大量的重复代码;以及一堆的全局的变量,方法。。。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015.09.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档