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

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

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

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

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

做单页应用的一些总结

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏进击的君君的前端之路

JS相关概念

1432
来自专栏ionic3+

【Appetite】ionic3实录(二)UI分析及总体配置

首先,如果你是初学者,我强力建议你先看完我这篇文章: 【开发指南】(四)Ionic3快速上手并了解这些

1133
来自专栏无所事事者爱嘲笑

vue中的v-cloak

2059
来自专栏崔庆才的专栏

腾讯云Ubuntu搭建Selenium+PhantomJS环境过程

前言大部分网页可以直接请求爬取,但是如果页面是JS渲染的该怎么办呢?如果我们单纯去分析一个个后台的请求,手动去摸索JS渲染的到的一些结果,那简直没天理了。所以,...

8000
来自专栏游戏杂谈

构建第一个Flex的Mobile APP

Flash Builder 4.5已经支持直接创建Flex Mobile Project,写一个最简单的例子

1002
来自专栏全栈之路

vue项目引入markdown

git地址:https://github.com/showdownjs/showdown 其实引入markdown挺简单的:

7311
来自专栏一“技”之长

标签之美三——超链接的嵌入 原

通常的超链接有两种方式,一种是链接到另一个文件,另一种是链接到当前文件的某个位置。这两种方式都是通过<a></a>标签来创建,其中href属性用来指定链接的目标...

952
来自专栏用户2442861的专栏

Chrome开发者工具不完全指南(一、基础功能篇)

http://www.cnblogs.com/constantince/p/4565261.html

882
来自专栏GuZhenYin

[EasyUI美化换肤]更换EasyUi图标

前言 本篇文章主要是记录一些换EasyUI皮肤的过程,备忘.也欢迎美工大神各路UI给点好意见,EasyUI我就不介绍了,自行百度吧..(So..所以别问我是不是...

5868
来自专栏阮一峰的网络日志

网页开发的6种在线调试环境

如今的网页代码,一般由三个部分组成:   * HTML,语义层,提供网页的内容。   * CSS,表现层,规定网页的外观。   * Javascript,...

3183

扫码关注云+社区

领取腾讯云代金券