我们小组在这次实训中的项目题目为企业订餐管理系统,而我负责的内容是后台管理系统。
在本次实训中我最初计划使用vue框架搭建管理系统,但是由于工作原因以及vue框架学习的高坡度,学习进度一直不是很理想,所以我重新选择了React框架。
React框架是我最早接触的前端框架,在功能性和高效性上都有很大的体现,同时他体积小,可拓展性强,无论是中小型项目还是大型项目都适于使用。
React框架的主要内容是数据变化实时更新view,还有组件化编程。数据是React框架实现的基础,也是实现动态更新的重点,只要有任何可以改变view的数据传入并且修改state的值,就会更新view。组件是基于单一责任原则,即一个基层组件只因一个独立的责任被改变,当任何组件有多个责任影响时就拆分为子组件。
但是React框架在学习难度上还是不小的,对基础的要求很高。在框架学习之前需要先熟悉以及掌握各种前端基础知识如html,CSS,javascript等。特别是原生态JavaScript的使用,DOM操作等。
如果像我一般在仅仅是了解以及接触过前端基础的情况下去学习和使用React框架,会有较大的困难。当碰到问题,然后使用百度或者论坛去找答案的时候,会碰到一个现象,就是一个名词接一个名词的不理解。所以,重中之重就是先打好基础,学好html等前端知识,再学习框架。
工具方面由于大部分的内容是关于前端的,所以我使用了VScode和WebStorm来编程。VScode是一个很适合用于开发前端,以及管理项目文件的文本编辑工具,类似于sublime text,但是有更加丰富的插件库。WebStorm是JetBrains公司开发的关于前端编程的IDE,功能全面,还有Terminal可以运行,也可以添加插件。除此之外我还使用了Go语言建设后端服务器实现逻辑功能,Go语言的IDE是Goland,同样出自JetBrains。Go语言的介绍在我前面的博客里已经写了,有兴趣的可以看一下。
在学习了一些前端知识以后,我开始慢慢接触到一些编程思想,例如前后端分离,数据单向传递等。其中最深刻的是前后端分离,即前端专注于页面展现,后端实现业务逻辑,使整个项目职责更加清晰明了。
整个项目的建设过程中我的任务除了后台管理系统的开发之外还有技术支持。由于项目成员对前端知识掌握的欠缺以及对前后端分离的思想缺少接触,容易碰到一些前后端关联方面的问题如:ajax请求的数据交互,json数据的形式,以及http请求中请求头和响应头信息的意义,跨域问题等。其中最麻烦和最困难的是跨域问题。跨域问题需要设置响应头信息中的Access-Control-Allow-Origin设置为*,即所有请求域都可以访问,但是我使用fetch发起的ajax请求在jfinal框架下无法访问,而我通过百度寻找的解决方法也都不能解决问题,限于时间的原因,我选择了beego框架作为后端服务器,而beego解决跨域问题的方法较为简单,使用过滤器让所有的请求都带上响应头设置即可,如下所示
1. beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
2. AllowAllOrigins: true,
3. AllowMethods: []string{"*"},
4. AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin"},
5. ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin"},
6. AllowCredentials: true,
7. }))
这一次的项目实训给我的感觉跟以前有很多不同,以前的任务目的都是为了学习和熟悉使用某一种语言实现某个项目,是基于语言的,不管是c也好,c++也好。但是这一次是以项目为驱动的,不论使用什么方法,目的是实现功能,展示页面,有一定的实用性的。而且,这次的项目实训更贴近业界技术发展趋势,是当前流行,或者热门的项目开发方式。能开拓我们的视野,让我们了解更多企业级的应用的开发模式。
在这次实训中,我最深刻的体会就是不能高估自己,低估学习难度和成本。vue框架在界面渲染中是没有太大问题,但是在父子组件间传值的实现上碰到了较大的问题,而普遍推荐使用的Vuex又不是那么适用于我碰到的问题。当然,这也是因为我前端的基础知识掌握的不好,导致很多的理论知识无法理解。
基于上述原因,我希望我的教训能对学弟学妹们有点用处,同时,也是给自己一个忠告。基础知识很重要,是学习框架的基本要求,也是自己知识体系的基石,在基础知识上沉淀的越多,后期发力时学习的效率就越高,知识的掌握程度就越高。
这一次的实训也是让我有了很大的感想,想在基础方面再加强一点,在框架的学习上也要更系统一些,不管是通过视频,还是文档,重要的是能够动手自己去实现一次,而不是光看一遍,让自己变得眼高手低。
我以后的技术路线,应该会往全栈发展,希望能更多的学习前端后端的知识,在五年内能够成为一个全栈工程师。