angularjs+springMvc学习笔记

回调

说白了,就是把函数当参数传给另一根函数,在另一个函数执行时调用此函数
例如,在下面这段代码中,上面定义了两个函数success和error,下面的promise.then(success,error)方法请求成功执行success,失败执行error
angularjs+springMvc学习笔记_第1张图片

异步

异步的原理我看了网上的一些博客和例子,大都以定时任务setTimeout, setInterval为例子说明,但具体的原理我还是不太明白,我只知道js异步的执行顺序和c/c++的不同
例如,我把上面的success方法中的$scope.teachers = response.data写到外面,即:

angularjs+springMvc学习笔记_第2张图片

按照c/c++的顺序,当上面promise.then()语句执行完之后,才执行下面的赋值语句,可js的异步处理会直接执行下面的赋值语句,如果在控制台输出teachers,会显示undefined

跨域CROS

在前后台对接时会发生跨域问题
clipboard.png
在spring官方文档有详细的解决方案,如下图
angularjs+springMvc学习笔记_第3张图片

按照需求进行改写就行了

angularjs+springMvc学习笔记_第4张图片

建立数据表(后台)

在thinkphp中,我们通过navicatMysql数据库工具建立数据表,而在spring中,则是通过新建类来建立数据表,对应关系如下
angularjs+springMvc学习笔记_第5张图片

teacher类对应表名,私有属性对应表的各个字段

angularjs+springMvc学习笔记_第6张图片

然后建立接口来访问和操作数据

这里遇到一个小问题,在定义Teacher类时,设置主键自增

clipboard.png

官方推荐使用AUTO,但是由于我们的数据库存在一些问题,只能使用IDENTITY来暂时解决

通过ui-router定制路由(前台)

ui-router的出现使得路由定制非常简单易用,在安装完ui-router后,改写app.js
angularjs+springMvc学习笔记_第7张图片

接着,在V层添加ui-view标签就可以实现页面的跳转了

功能性开发(前台)

1.定义路由对应的控制器(ui-router)
2.初始化控制器->yoman命令->yo angular.controller user 生成位置app/scripts/controller/user.js
3.数据绑定至V层(双向绑定)
4.功能开发

功能性开发(后台)

后台
1.增加路由注解
(1)指明方法(get,post,delete,put,patch)
(2)指明地址(例如127.0.0.1:8080/Teacher)
2.有cros设置的,增加cros设置

关于第一步,按照下面的写法改写就行
angularjs+springMvc学习笔记_第8张图片

@Autowired 自动装置接口实例化的对象
@GetMapping使用的方法

总结

1.第一次接触angularjs与springMVC前后台分离开发的模式,感受到了它比thinkphp强大的原因,非常方便团队分工开发
2.使用注解的方式写程序,就好像给程序注释一样,非常方便,而且易读
3.yoman的自动刷新机制解放了每次写前台F5刷新,在写原型时相当方便,有了angularJs的双向绑定,就再也不会出现thinkphp里十几行长的$this->assign()
4.idea编译器强大的功能省下很多用在程序规范的精力,alt+insert生成模板相当方便,出了错打断点debug可以很快可以发现问题
5.总之,相比于thinkphp,angularJs+springMVC的开发更加规范,很容易做到代码风格的统一和程序的易读,可以将更多的精力投放到功能的设计和实现上来

你可能感兴趣的:(javascriptjava)