公司内部技术分享之Vue.js和前端工程化
今天主要的核心话题是Vue.js和前端工程化。我将结合我这两年多的工作学习经历来谈谈这个,主要侧重点是前端工程化,Vue.js侧重点相对前端工程化,比重不是特别大。 Vue.jsVue.js和React.js、Angular.js并驾齐驱号称前端三大框架(前端最常用的这三大框架,大中小公司均采用)。 关于Vue.js这部分,主要参考Vue.js的官方网站和一些开源项目 下面正式开讲 工具DevtoolsDevtools其目的主要是用于浏览器调试Vue相关的项目(因为Vue.js中的标签并不仅仅是html相关的,还有如el这类的标签及其相关的dom关系等,这些都是常规的浏览器调试所不能做到的) vue-devtools开源项目地址 Vue CLI1.Vue CLI具有如下优点 (2)易于扩展 (3)无需 Eject (4)CLI 之上的图形化界面 (5)即刻创建原型 (6)面向未来 2.Vue CLI的三种构建方式 npm install -g @vue/cli vue create hello-world npm run server 第二种方式(旧版本2.x) npm install -g @vue/cli-init
vue init webpack my-project
第三种方式(GUI) vue ui 效果图如下: ? ? Vue LoaderVue Loader的作用是解析和转换 .vue 文件,提取出其中的逻辑代码 script、样式代码 style、以及 HTML 模版 template,再分别把它们交给对应的 Loader 去处理。 Vue Loader官方指南 ? 从图中我们就可以看出它们的职责和作用,正好验证前面说的script(逻辑代码)、style(样式代码)、template(html模板)。 核心插件Vue RouterVue Router文档 VuexVuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。 Vuex官方文档 Vue服务端渲染Vue.js 是构建客户端应用程序的框架。默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM。然而,也可以将同一个组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将这些静态标记”激活”为客户端上完全可交互的应用程序。服务器渲染的 Vue.js 应用程序也可以被认为是”同构”或”通用”,因为应用程序的大部分代码都可以在服务器和客户端上运行。 Vue.js服务端渲染指南 这个服务端渲染通常可以用node.js中的express框架,当然了,也可以用koa或者egg.js等。 资源列表Vue.js官方仓库 关于Vue.js学习方式,个人建议对HTML+CSS+JavaScript要掌握的比较好才行,不仅仅对前端而言,后端也亦如此。 本次的Vue.js内部分享不算太多,只不过是全局概况一下,更多的内容,可以去官方网站上学习。 我觉得作为一名研发人员,一定要养成通过官网学习的习惯,像博客之类的可以作为一个辅助或者深入的学习方式。通过官方网站学习,我觉得总体可以让你形成一个全局的认识,这种认识,可以让你触类旁通或举一反三。 举个例子说一下,最近因为某个电商项目二次开发,而该二次开发用的是ThinkPHP框架,虽然我没有接触过PHP方面的,但是我通过官网相关知识,一下就了解了它的大致,ThinkPHP是基于MVC的,而正好可以联系到Java中的SSM,其也是基于MVC。 前端工程化这一部分内容我将结合我的开发经历和《前端工程化体系设计与实践》这本书。 前后端分离原始的前后端分离方式前端把页面模板写好,后台将页面模板改为jsp或者freemaker、volocity等动态模板语言。 曾经做的一个智能酒店项目就是使用这种方式。这样做最不好的地方是,如果公司是前后端职责分明的话,前端每改动某个页面时,都需要将修改的后发给后台人员,后台人员将其改为jsp。这样一来效率及其低下,当然了,小公司是不会这么做的,小公司都是后台兼任前端的,自然就可以省去这些不必要的时间成本。 原始的前后端分离方式优缺点(以模板语言采用jsp为例): 优点: 缺点: 总的来说,用jsp作为视图展示,可复用性不是特别好,于是曾经的第二个项目LMS(智能门锁系统),视图就变成了HTML,由Ajax作为前后端交互的支点。 用Ajax的优缺点如下: 优点: 缺点: 总的来说,开发中一般两者兼用。 不过后来,Vue.js、Angular.js、React.js火起来了,前后端分离实践更佳的方式到来。 因为即便完全采用jsp作为视图展示/采用HTML作为视图展示或者两者兼用,还是存在不少的问题的。这一点后面会讲到的。 前端工程化前端工程化的目的在于提高生产效率 前端工程化的衡量准则三大衡量准则: (1)从开发的角度衡量工程化,主要体现为”快”; (2)从测试的角度衡量工程化,主要体现为”快”和”准”; “快”的主要体现在前端工程师和后端工程师并行完成之后的集成测试阶段。 什么是集成测试? 你可以将其理解为一辆车,车在没有组装成是一堆大大小小的零件,这些零件经过生产工人生产,组装工人组装,质量工人测试。零零散散的零件单个测试也许是没有问题的,但是组装成一辆车的时候,这个时候就可能会出现问题。 (3)从部署角度衡量工程化,主要体现为”稳”; 前端工程化的进化历程前端工程化的3个阶段(1)本地工具链-工程化不等同于工具化; 前端工程化是一系列工具和规范的组合,规范为蓝本,工具为实现。其中规范如下: 另外工具链的统一,另一个好处是巩固了流程的规范性,开发者使用统一的工具链、遵循统一的规范进行业务代码的编写,利于多人协作和程序维护。 试想一下: (2)管理平台-进一步淡化差异、加深规范; 管理平台形态的工程化需达到如下几点: 管理平台形态将各个功能模块的执行环境集中化,从各模块实现角度来讲与本地工具链基本一致。 (3)持续集成-前端工程化的目标是融入整体 举个例子,比如后端修改了某个接口,前端某个dom与这个接口关系紧密,接口变化了,dom渲染也要随之变化,但是由于工作流是分开的,前端工程师并不知道这一点。我们经常强调一点,要加强沟通,但是当项目紧急期到来时,每个人手里任务一大堆,这时沟通就可能会少了很多,这时像上面说的,接口发生变化时,前端工程师并不知情,直到因为某些操作发生问题时,才知道原来是接口变了。另外从某个角度来看,接口的设计原则应该是与前端相隔离的,但是实际中并非如此。 总结今天主要分享的两个知识点,一个是vue.js,另一个是关于前端工程化。 前端工程化,用一句话来概括就是让工具更好的服务于流程。从研发的角度看,使用技术实现业务(让技术更好的服务于业务)。今天说的这个工程化核心就是工具与流程相结合起来,让整个工作流紧密结合且效率提高。鉴于本次内部分享说的挺多的,目前这只是一部分。欢迎大家评论留言,最好还是提问题,问题让思考更深刻。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |