前端模板编译
1. web前端有模板开发需要多久
不定。
Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征,在互联网的演化进程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。
网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。
2. web前端开发需要掌握的几个必备技术
接下来由小编简单的列举出几个前端开发中必须要学会的知识:
第一阶段:
HTML+CSS:
HTML进阶、CSS进阶、div+css布局、HTML+css整站开发、
javaScript基础:
Js基础教程、js内置对象常用方法、常见DOM树操作大全、ECMAscript、DOM、BOM、定时器和焦点图。
JS基本特效:
常见特效、例如:tab、导航、整页滚动、轮播图、JS制作幻灯片、弹出层、手风琴菜单、瀑布流布局、滚动事件、滚差视图。
JS高级特征:
正则表达式、排序算法、递归算法、闭包、函数节流、作用域链、基于距离运动框架、面向对象基础、
JQuery:基础使用
悬着器、DOM操作、特效和动画、方法链、拖拽、变形、JQueryUI组件基本使用。
第二阶段:
HTML5和移动Web开发
HTML5:
HTML5新语义标签、HTML5表单、音频和视频、离线和本地存储、SVG、WebSocket、Canvas.
CSS3:
CSS3新选择器、伪元素、脸色表示法、边框、阴影、background系列属性改变、Transition、动画、景深和深透、3D效果制作、Velocity.js框架、元素进场、出场策略、炫酷CSS3网页制作。
Bootstrap:
响应式概念、媒体查询、响应式网站制作、删格系统、删格系统原理、Bootstrap常用模板、LESS和SASS。
移动Web开发:
跨终端WEB和主流设备简介、视口、流式布局、弹性盒子、rem、移动终端JavaScript事件、手机中常见JS效果制作、Zepto.js、手机聚划算页面、手机滚屏。
第三阶段:
HTTP服务和AJAX编程
WEB服务器基础:
服务器基础知识、Apache服务器和其他WEB服务器介绍、Apache服务器搭建、HTTP介绍。
php基础:
PHP基础语法、使用PHP处理简单的GET或者POST请求、
AJAX上篇:
Ajax简介和异步的概念、Ajax框架的封装、XMLHttpRequest对象详细介绍方法、兼容性处理方法、Ajax框架的封装、Ajax中缓存问题、XML介绍和使用。
AJAX下篇:
JSON和JSON解析、数据绑定和模板技术、JSONP、跨域技术、图片预读取和lazy-load技术、JQuery框架中的AjaxAPI、使用Ajax实现爆布流案例额。
第四阶段:
面向对象进阶
面向对象终极篇:
从内存角度到理解JS面向对象、基本类型、复杂类型、原型链、ES6中的面向对象、属性读写权限、设置器、访问器。
面向对象三大特征:
继承性、多态性、封装性、接口。
设计模式:
面向对象编程思维、单例模式、工厂模式、策略模式、观察者模式、模板方法模式、代理模式、装饰者模式、适配器模式、面向切面编程。
第五阶段:
封装一个属于自己的框架
框架封装基础:
事件流、冒泡、捕获、事件对象、事件框架、选择框架。
框架封装中级:
运动原理、单物体运动框架、多物体运动框架、运动框架面向对象封装。
框架封装高级和补充:
JQuery框架雏形、可扩展性、模块化、封装属于传智自己的框架。
第六阶段:
模块化组件开发
面向组件编程:
面向组件编程的方式、面向组件编程的实现原理、面向组件编程实战、基于组件化思想开发网站应用程序。
面向模块编程:
AMD设计规范、CMD设计规范、RequireJS,LoadJS、淘宝的SeaJS。
第七阶段:
主流的流行框架
Web开发工作流:
GIT/SVN、Yeoman脚手架、NPM/Bower依赖管理工具、Grunt/Gulp/Webpack。
MVC/MVVM/MVW框架:
Angular.js、Backbone.js、Knockout/Ember。
常用库:
React.js、Vue.js、Zepto.js。
第八阶段:
HTML5原生移动应用开发
Cordova:
WebApp/NativeApp/HybirdApp简介、Cordova简介、与PhoneGap之间的关系、开发环境搭建、Cordova实战(创建项目,配置,编译,调试,部署发布)。
Ionic:
Ionic简介和同类对比、模板项目解析、常见组件及使用、结合Angular构建APP、常见效果(下拉刷新,上拉加载,侧滑导航,选项卡)。
ReactNative:
ReactNative简介、ReactNative环境配置、创建项目,配置,编译,调试,部署发布、原生模块和UI组件、原生常用API。
HTML5+:
HTML5+中国产业联盟、HTML5PlusRuntime环境、HBuilder开发工具、MUI框架、H5+开发和部署。
第九阶段:
Node.js全栈开发:
快速入门:
Node.js发展、生态圈、Io.js、Linux/Windows/OSX环境配置、REPL环境和控制台程序、异步编程,非阻塞I/O、模块概念,模块管理工具、开发流程,调试,测试。
核心模块和对象:
全局对象global,process,console,util、事件驱动,事件发射器、加密解密,路径操作,序列化和反序列化、文件流操作、HTTP服务端与客户端。
Web开发基础:
HTTP协议,请求响应处理过程、关系型数据库操作和数据访问、非关系型数据库操作和数据访问、原生的Node.js开发Web应用程序、Web开发工作流、Node.js开发Blog案例。
快速开发框架:
Express简介+MVC简介、Express常用API、Express路由模块、Jade/Ejs模板引擎、使用Express重构Blog案例、Koa等其他常见MVC框架。
3. 现在比较常用的前端框架有哪些
bootstrap是twitter出的一款不错的UI框架,或者与其说是框架不如说是类库(lib),当然这里边牵扯到一个“究竟什么是框架什么是类库?”的问题,我们暂时不谈。毕竟是有大公司背景的代码堆,我觉得没什么“落伍”可言。
angular是前两年之内突然火得一塌糊涂的一个fe框架,这个我觉得可以算的上是真正意义上的框架了,MVVM双向绑定,包括它拥有足够完善的社区、生态,甚至chrome上都有很多好用的相关插件(这一点可以说是占了google出品的光),比较完整的大型项目都是可以考虑引入的。但如果你的网站只是做一些轻量级的东西,杀鸡焉用宰牛刀吧我觉得。
backbone主要针对的MVC中的M层,至少我是这么理解的。对UI层它几乎没什么太多的限制,一方面给出了coder自由度进行发挥,另一方面也等于在这方面框架本身对开发没提供什么太大的帮助。我觉得这更像是一个高手向的框架,另外对于underscore前端模板那一套东西,说实话作为一名php java啥都能写的FE我始终觉得这套东西有那么一种纯JS工程师的一厢情愿的意味。这是个人看法了,不一定准确,况且有人会搬出ajax动态渲染时 前端模板的作用来反驳我,别急着反驳,至少往下看完我说的话。
相比之下,react可以说是一个在MVC中V层做的十分出色和新颖的框架了,独特的jsx编译机制就已经让你的代码变得高大上了,我是觉得这个类库在UI层做的更彻底更专业,或者说让FE的代码更专业了。更何况,react比angular更年轻,而且同样拥有大公司背景,react native一出更是让JS工程师的地位取得了革命性的提升,(不要跟我提phonegap,用过两个东西后你会明白,react打包的app性能甩phonegap几条街没问题)。另外既然楼主提到了之前的网站是bootstrap,不妨可以看一看react-bootstrap这个东西,或许这就是你想要的。
4. 前端为什么需要构建工具
注: 在知乎上面几年前回答的问题,搬过来给你看看吧
1. 【调试服务器】首先如果你是一个准备做WEB开发实践的,不管前端、后台,首先需要了解一两种服务器apache,tomcat,nginx啥的,至少能够配置一个基本的本地服务和修改索引路径,前端页面使用http/https协议访问,而不是本地文件协议(file协议下很多jsAPI都是受限的)。
2. 【调试自动更新】服务器搭建好了,那么现在开始调试网页,然后你修改一点代码,去浏览器里面F5刷新页面看看效果,再修改一点代码,再去浏览器里面F5刷新页面看看效果...如此循环往复, maybe让工具帮助你检测本地文件修改然后实时刷新网页更靠谱。
3. 【换种方式写代码】然后就是写代码了,less/sass是不错的css组织工具,ES6也能让你的javascript代码显得更严谨和逻辑清晰,要是能够在访问页面的时候实时获取css/babel(es6编译器)编译结果神马的应该显得很cool。
4. 【模块化】当然在完成逻辑相对复杂的交互功能时候,可能需要你组织非常复杂的代码功能,这个时候了解一下模块化的开发思想显得很有必要require.js事实上更早,也更广泛一点,sea.js在国内也不错。
5. 【模板引擎】然后就是对于js生成HTML(或者其他什么的)的一种包装方式, 即:js模板引擎(handlebars,jade), 你可以尝试在开发时候使用这样的模板工具生成自己想要的HTML文档什么的,也是一种不错的体验,这个就像你用less写css代码一样,或者说用php,jsp这样的服务端语言工具生成实时HTML页面。
6. 【代理调试】有的时候你开发的东西并不只是前端代码,牵扯到跟服务端应用之间的数据交互,难免需要使用ajax,ajax这货基于安全考虑是不允许跨域的,因此可能需要通过代理的方式实现数据调试这样的工具也有不少,nginx服务器是其中的佼佼者。
7. 【资源合并优化】OK, 如果到完成开发阶段,你需要提交自己开发的代码到线上服务器了,在提交之前,你需要考虑将开发的资源进行最优化(合并,压缩神马的), js方面有uglify,css有cssmin神马的,图片压缩还可能根据不同的类型进行不同程度和配置的压缩,这些事情交给别个工具处理显得很有必要,要是能够一键处理那简直了, 网络的fis,业内最流行的grunt.js、gulp.js神马的,事实上它们在配置化编译LESS/Coffee这类工作在自己的流程中也很在行。
8. 【Combo】使用异步模块化开发带来的弊端就是对于大量零碎依赖文件需要分别开辟多个http链接去获取,这可不是一个好现象,要知道单个浏览器单域名并发获取资源的数量是很有限的, 因此例如KISSY就支持了简单配置一个combo参数来组织一个获取nginx的 http-concat格式资源的路径,当然这样的动态合并模式也适用于普通的资源请求合并。
9.【资源缓存和更新】 CDN 能够确保你已经发布到服务器上的资源以最快的响应时间到达浏览器,但是带来的问题是,你的代码更新,CDN则傻乎乎的不理你,除非你在使用的地方告诉它需要更新了( 时间戳、MD5文件名啥的 )。
事实上,我觉着凡是重复进行的工作总有可以程序和代码可以替你完成的部分,前端开发中这种事情尤其多,工具啥样的自己去定义才最合适自己,而nodejs的出现使得前端自己可以方便的开发这类东西(上面的less、coffee、uglify、gruntjs、fis、gulp这些个单词可以说:都依赖nodejs)。
PS: 感兴趣可关注 f2e-server, 网络搜索关键字第一个就是官网。
5. 编译器前端开发
编译器粗略分为词法分析,语法分析,类型检查,中间代码生成,代码优化,目标代码生成,目标代码优化。把中间代码生成及之前阶段划分问编译器的前端,那么后端与前端是独立的。后端只需要一种中间代码表示,可以是三地址代码或四元式等,而这些都与前端生成的方式无关。也就是不论你前端是用fortran还是c/c++,只要生成了中间代码表示就可以了,后端是不管你是用哪种语言生成的。
6. Web前端工程师该如何选择web前端模板引擎
今天小编要跟大家分享的文章是关于Web前端工程师该如何选择web前端模板引擎?如果你正在从事web前端工作,如果你也想要了解如何选择web前端模板引擎的知识,那么就来和小编一起看一看本文为大家介绍的内容吧~
一、Web模板就在那里
模板引擎负责组装数据,以另外一种形式或外观展现数据。浏览器中的页面是Web模板引擎最终的展现。
无论你是否直接使用模板引擎,Web模板一直都在,不在前端就在后端,它的出现甚至可以追溯到超文本标记语言HTML标准正式确立之前。
二、服务端的模板引擎
我所知道最早的Web模板引擎是PHP,它正式诞生于1997年,工作在服务器端。让我们看看PHP官方的intro-whatis:
PHP(“PHP:Hypertext
Preprocessor”,超文本预处理器的缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到HTML中,尤其适合web开发。
PHPer普遍赞同PHP本身就是最天然、原生的PHP模板引擎,因为她本来就是。在PHP的世界里多次出现过再包装的模板引擎,着名的有
smarty。
其它服务器端语言很多都有HTML模板引擎,比如JSP、mustache。
毫无疑问,这些服务器端模板引擎最终生成的结果是HTML(XML)字符串,处理流程逻辑使用宿主语言本身的语法实现。
它们的共同特征:HTML只是个字符串,最终结果可能还需要类似Tidy这样的清洁或修正验证工具。
这里提出一个问题:二次封装的smarty有存在的必要么?
三、浏览器端的模板引擎
我所知道最早的前端模板引擎是jCT,它托管于Google
Code,诞生于2008年,宿主语言是JavaScript,工作在浏览器中。很荣幸,我就是jCT的作者,相关早期博客可以查看achun、githubjCT
备份。
直到今天写这篇文章,我才发现pure-js这篇文章里面也提到不少先行者——jemplate最早在2006年就创建了。
今天在OSC搜索JavaScript模板引擎你会得到100+个结果,下边列举一些:
·轻量度:tpl.js、T.js
·认知度:arttemplate、mustache.js、doT.js、handlebars.js、pug
·DOM-tree-based:domTemplate、transparency、plates
·VDOM-based:htmltemplate-vdom、virtual-stache、html-patcher
·流行框架:Vue.js、ReactJS、riot
·Real-DOM:PowJS
它们的共同特征:全都支持插值。
这里还有templating-engines受欢迎度的对比,甚至best-javascript-templating-engines
投票及正反方的理由。
四、如何选择
我认为存在即合理,每个引擎、框架总有可取之处,至少在你的应用里,在某个时代,所以本文不会评论某个引擎哪一点不好,那样是不客观的。现在回答前边提到的问题:smarty
有存在的必要么?我的答案是:有。理由很简单,看给谁用、看大背景。
对于前后端没有分离的应用,或前端人员对后端语言不够熟悉,或因岗位职责需要,那么前端人员掌握一种比较通用的模板语法(语言)是现实的,反之让PHPer自己去使用
smarty那就太浪费技能了。
下面是通常意义上的引擎选择建议:
1.前提,选择的引擎能满足数据渲染需求,且不和现有依赖冲突,如果你已经非常熟悉某个引擎,那你已经有答案了。
2.是一次性的项目需求么?是的话直接选择轻量的,学习复杂度最低的。
3.是要做组件开发么?
4.引擎支持预编译结果,不必每次都实时编译么?
5.要跨平台么?有官方提供支持的,首选类React-JSX的引擎或纯粹的VDOM引擎。
6.选择学习或维护复杂度最低的,众所周知,开发者对调试的时间超过写代码的时间深恶痛绝。
7.最后才是性能对比,性能对比是一件非常细致的工作,他人的对比结果不一定符合你的场景。
我认为应该弱化语法风格的对比,偏好是没有可比性的,一些语法甚至有特殊的背景原因。
为什么最后才是性能对比?
性能的确很重要,但如果性能还没有影响到你的应用体验度,那就忽视它。很难真实地模拟应用场景,通常只有通过真实场景来检验,目前的测试工具还达不到这种效果。
前述问题有些有固定答案,下面讨论余下的问题:如何考虑组件开发、支持预编译、复杂度?
五、组件开发
进行组件开发已经不再是选择模板引擎的问题了,这是生态环境选择的问题。如果你的应用需要更快地完成,那么时间点是第一位的,就选择流行框架,有足够多的组件让你使用或参考。如果你的应用有独立的生态环境,需要技术选型以便长期维护,那继续看下文。
六、预编译
预编译应该具备:
1.编译结果在目标环境中不再需要编译过程。
2.编译结果可调试性,这意味着结果应该包含原生ECMAScript代码,而不是纯粹的数据描述。
大家都知道React-JSX是支持预编译的,官方的说法是ReactWithoutJSX,即总是build过的。
一些基于字符串处理的引擎也支持预编译。如果你需要预编译,建议抛弃编译结果依然是基于字符串拼接的引擎,那样还不如不预编译,那是HTML5未被广泛支持之前的技术手段。
至少也要有类似React-JSX这样的编译结果才具有可调试性。备注:Vue.js支持多种模板引擎,可达到同样的效果。
原ReactJS代码,其中用到了WebComponents技术:classHelloMessageextendsReact.Component{
render(){
return
7. 编译程序为什么有分前端和后端
随着大家对浏览器页面的视觉和交互要求越来越高,“套模板”的方式渐渐无法满足要求,这个所谓的表示层慢慢地迁移到浏览器当中去了,一大批像Angular, ReactJS之类的框架崛起,前后端分离。
后端的工程师只负责提供接口和数据,专注于业务逻辑的实现,前端取到数据后在浏览器中展示,各司其职,这种分工能够更好地节省时间,使产品的质量更好。
(7)前端模板编译扩展阅读:
GCC编译的前端将不同的高级编程语言经过词法分析、语法分析转化为与前端语言无关的统一的中间表示。有了与前端无关的中间表示,GCC的前端将不同的高级编程语言转换成这种中间表示,这就是GCC处理器支持多种编程语言的根本原因。
前端编译的主要作用,是将编写的 .java 文件 编译成 .class 文件,也就是我们常说的字节码文件;字节码 文件,里面包含了我们编写的 .java 代码中的运行逻辑,参数 以及 这些参数在内存中的分配。