201701-07 前端工程化开发方案app-proto 什么是前端工程化?根据具体的业务特点,将前端的开发流程、技术、工具、经验等规范化、标准化就是前端工程化。它的目的是让前端开发能够“自成体系”,最大程度地提高前端工程师的开发效率,降低技术选型、前后端联调等带来的协调沟通成本。美团点评厦门智能住宿前端研发团队通过多个前端项目开发的探索和实践,基于“约定优于配置”(ConventionOverConfiguration)的原则制定了一套前端工程化开发方案app-proto。本... 继续阅读 >
201612-21 23条前端性能优化,看懂就够了! 前端性能优化是个巨大的课题,如果要面面俱到的说的话,估计三天三夜说不完。所以我们就从实际的工程应用角度出发,聊我们最常遇见的前端优化问题。Yslow是雅虎开发的基于网页性能分析浏览器插件,可以检测出网页的具体性能值,并且有著名的Yslow23条优化规则,这23条,就够我们玩的了。1.减少HTTP请求次数尽量合并图片、CSS、JS。比如加载一个页面,如果有5个css文件的话,那么会发出5次http请求... 继续阅读 >
201612-12 五个典型的javascript面试题 在IT界,需要大量的javascript开发者。如果这个角色能够最佳地展现你的能力,那么你有许多机会换家公司,以及提高薪水。但是在你被公司录取之前,你需要展现你的技术,以便通过面试环节。在这篇文章中,我会展示你五个典型的问题。问题1:范围(Scope)思考以下代码:(function(){vara=b=5;})();console.log(b);控制台(console)会打印出什么?答案上述代码会打印出5。这个问题的陷阱... 继续阅读 >
201612-06 JavaScript易错知识点整理 前言本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点。JavaScript知识点1.变量作用域vara=1;functiontest(){vara=2;console.log(a);//2}test();上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2。... 继续阅读 >
201611-30 javascript之活灵活现的Array 前言就如同标题一样,这篇文章将会灵活的运行Array对象的一些方法来实现看上去较复杂的应用。大家都知道Array实例有这四个方法:push、pop、shift、unshift。大家也都知道push+pop实现栈,shift+push实现队列。在这里不讨论什么先进后出、先进先出。但一面这个题将要用到这几个方法。题目螺旋矩阵这个名词,在后台语言中可能很熟悉,他是个二维数组,他有什么特点呢?请看下图:以上是一个从外到... 继续阅读 >
201611-29 Web 前端从入门菜鸟到实践老司机所需要的资料与指南合集 Introduction&Overview:入门与概览欢迎来到,前端世界!2016–对于未来五年内Web发展的7个预测2015–我的前端之路:从命令式到响应式,以及组件化与工程化的变革怎么成为一名优秀的软件工程师GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean:十年前,MartinFowler撰写了GUIArchitectures一文,至今被奉为经典。本文所谈的所谓架构二字,核心即是对于对于富客户端的代码... 继续阅读 >
201611-28 编写高性能的 JavaScript 本文的初衷是想介绍如何利用些简单的代码小技巧就能促进JavaScript编译器的优化进程从而提升代码运行效率。特别是在游戏这种对于垃圾回收速度要求较高,你性能稍微差点用户就能见到白屏的地方。Monomorphism:单态性JavaScript中允许函数调用时候传入动态参数,不过就以简单的2参数函数为例,当你的参数类型、参数数目与返回类型动态调用时才能决定,编译器需要更多的时间来解析。编译器自然地希望能够处理那些单态... 继续阅读 >
201611-23 JavaScript常见原生DOM操作API总结 最近面试的时候被这个问题给卡了,所以抽时间好好复习一下。几种对象NodeNode是一个接口,中文叫节点,很多类型的DOM元素都是继承于它,都共享着相同的基本属性和方法。常见的Node有element,text,attribute,comment,document等(所以要注意节点和元素的区别,元素属于节点的一种)。Node有一个属性nodeType表示Node的类型,它是一个整数,其数值分别表示相应的Node类型,具体如下:{ELEMEN... 继续阅读 >
201611-23 最全的资源教程:前端涉及的所有知识体系 综合类前端知识体系前端知识结构Web前端开发大系概览Web前端开发大系概览-中文版WebFront-endStackv2.2免费的编程中文书籍索引前端书籍前端免费书籍大全前端知识体系免费的编程中文书籍索引智能社-精通JavaScript开发重新介绍JavaScript(JS教程)麻省理工学院公开课:计算机科学及编程导论JavaScript... 继续阅读 >
201611-21 JavaScript 依赖注入实现 随着AngularJS的流行,依赖注入开始在JavaScript领域获得不少的关注。DI最突出的好处在于开发可复用可测试的代码单元。本文以简易的代码解释DI的实现机制,更多对DI优缺点的讨论可参考: 什么时候应该使用依赖注入 一文。一个基本的DI用例每个模块声明自己的依赖,并提供自己的服务。例如:di.service('foo',['bar'],functionfoo(bar){functionFoo(){this.bar=bar;}this.prototype.greeting=functio... 继续阅读 >
201611-03 详解JavaScript模块化开发 什么是模块化开发?前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得前端开发得到重视,也使得前端项目越来越复杂,然而,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块(module)了,那么什么是模块呢?一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使... 继续阅读 >
201611-01 JavaScript 知识点整理 JavaScript是按照ECMAScript标准设计和实现的,后文说的JavaScript语法其实是ES5的标准的实现。先说说有哪些基础语法?最基础语法有哪些?基础语法几乎所有的语言差异不大,无非数据类型、操作符、控制语句、函数等,简单列举下。5种基本数据类型&1种复杂的数据类型JavaScript包含5种基本数据类型,分别是Undefined/Null/Boolean/Number/String,基本数据类型就这五种,没有其他的!JavaScript包含1种复杂的数... 继续阅读 >
201610-31 JavaScript 中对象的深拷贝 在JavaScript中,对对象进行拷贝的场景比较常见。但是简单的复制语句只能对对象进行浅拷贝,即复制的是一份引用,而不是它所引用的对象。而更多的时候,我们希望对对象进行深拷贝,避免原始对象被无意修改。对象的深拷贝与浅拷贝的区别如下:浅拷贝:仅仅复制对象的引用,而不是对象本身;深拷贝:把复制的对象所引用的全部对象都复制一遍。一.浅拷贝的实现浅拷贝的实现方法比较简单,只要使用是简单的复制语句即可。... 继续阅读 >
201610-25 JavaScript正则表达式这几个细节你真的知道? 前言粗浅的编写正则表达式,是造成性能瓶颈的主要原因。如下:varreg1=/(A+A+)+B/;varreg2=/AA+B/;上述两个正则表达式,匹配效果是一样的,但是,效率就相差太远了,甚至在与少量字符串匹配时,reg1就会造成你浏览器卡死。不信?我们可以测试下。首先,我们声明一个字符串变量str,同时赋予一个包含20个A的字符串给str,采用match方法与上述reg1、reg2进行匹配测试,如下:varstr='AAAAAAAAAAAAAAAAAAAA';str.match... 继续阅读 >
201610-18 深入理解Javascript--作用域和赋值操作 作用域作为一个最基础的功能存在于各种编程语言中,它使得我们的编程更加灵活有趣。其基础功能就是存储变量中的值,然后可以对值进行访问和修改。可能我们都知道作用域的一些概念,以及其一些扩展的一些内容闭包等,但是相对于这些可能我们去了解这些变量到底是存到了哪里,而我们的程序是如何访问到他们的会更加有趣。vara=1;首先我们要了解到在我们进行声明变量并进行赋值的时候到底谁参与了我们的整个流程。1,引擎:它... 继续阅读 >
201610-17 守护 Javascript 中的函数参数 作为开发者,我们花费许多时间来调试,尤其是在发现问题来源方面。开发工具指导我们追踪调用栈,但是追踪过程仍然相当耗时,尤其在遇到级联异步调用的时候。这一问题在很早以前就被发现了。假设我们有一个从不同文档结构中搜索包含指定字符串的元素的函数。我们使用以下看起来合法的调用:grep("substring",tree);但是我们并没有得到期望的结果。按照以往的经验,我们会花费一些时间来检查给定的树形文档结构,时间有可能会... 继续阅读 >