0%

Lint工具用于检查代码的语法是否正确、风格是否符合要求。

JavaScript语言的最早的Lint工具,是Douglas Crockford开发的JSLint。由于该工具所有的语法规则,都是预设的,用户无法改变。所以,很快就有人抱怨,JSLint不是让你写成正确的JavaScript,而是让你像Douglas Crockford一样写JavaScript。

JSHint可以看作是JSLint的后继者,最大特定就是允许用户自定义自己的语法规则,写在项目根目录下面的.jshintrc文件。

JSLint和JSHint同时检查你的语法和风格。另一个工具JSCS则是只检查语法风格。

最新的工具ESLint不仅允许你自定义语法规则,还允许用户创造插件,改变默认的JavaScript语法,比如支持ES6和JSX的语法。

ESLint最初是由Nicholas C. Zakas 于2013年6月创建的开源项目。它的目标是提供一个插件化的javascript代码检测工具。

阅读全文 »

模块化开发的趋势越来越明显,特别是在大型前端项目中,模块化的开发让我们更好地组织和更灵活地使用代码,在Node端使用的是CommonJS规范的模块化,在浏览器端则是使用ES Modules模块规范。由于ES Modules是ES6才提出的,目前仅有少数版本的浏览器实现了模块化,如果我们使用模块化进行开发,就需要考虑浏览器兼容问题。另外,模块化的代码虽然在开发阶段对开发友好,但过多的模块并不利于浏览器的频繁加载调用。因此,为了解决模块化开发中的兼容和代码组织问题,我们一般使用模块打包工具来为我们实现模块代码打包为生产代码

目前主流的模块打包工具有:

  • webpack:打包所有的样式表资源。
  • parcel:极速零配置Web应用打包工具
  • rollup

本文主要就webpack的使用进行展开说明。

实际上,模块打包工具除了解决上面所说的模块规范兼容问题,还能优化组织其他资源的使用,**不仅限于js**,就webpack而言,理论上,我们应当把所有的资源文件都当成独立的模块去加载,去使用,而不仅仅是处理js模块代码。

阅读全文 »

《小狗钱钱》是被大众推荐的一本入门理财书,说起来,这本书浅显到小孩都能看懂,但其中的道理却是很多成年人所不知道的,其中对对金钱的正确认知和使用习惯也是很多人所不擅长的,而书中的很多很好地习惯可以让你养成最基本的理财观念。

小狗钱钱-douban

阅读全文 »

随着前端功能的日趋复杂,模块化开发变得尤为重要,在大型项目中,模块化的开发方式不仅能有效复用代码,还能针对性的修改模块代码而不影响项目的稳定运行,还能借助同样功能的第三方模块,提高开发效率。

模块化开发作为一种主流开发思想,开发项目就像搭积木一样,每一个模块就是一个个独立的积木而已。但是在代码中会相对复杂一些,模块之间的相互引用导致了模块并非完全独立于其他模块的。

本文主要就前端模块化开发的演变过程,重点说明js的模块化规范:浏览器端使用的ES Modules和Node环境使用的CommonJS规范。以及阐述如何通过基于模块化开发构建web应用。

阅读全文 »

一切重复性的工作都应该被自动化。

在前端工程化中,我们常常希望使用更有的模块进行项目开发,比如我们可能使用模板引擎进行页面渲染,使用sass来构建css,使用最新的ECMAScript语法或者ts进行业务逻辑开发。而以上的模块或者技能都只是一项选择,最终我们都需要转化为最基本的前端三件套:html + css + js。这其中的转换过程根据不同工具的使用而不同,但无疑都是重复性的工作,类似这些开发过程中的重复的工作,都应该使用自动化的思想为我们解决,我们只需要关注代码的业务逻辑和最终的准换结果,而中间的处理过程,都应该交给自动化构建工具。

除了基本的格式转换,自动化构建工具一般还具有压缩、合并、文件整理、启动服务、格式化代码等功能。

本文将会从三款前端自动构建工具gruntgulpfis的使用中感受自动化构建的特点和优势。

阅读全文 »

脚手架在建筑学中用于保障施工时能稳定进行的平台,建造者会在施工前根据不同的建筑物搭建不同的脚手架以供施工时的重复使用。

前端工程中的脚手架也是一样的道理,很多前端项目都有一些基础文件或通用模块作为项目运行的基本结构和运行工具,前端脚手架能为我们快速开启一个前端工程而准备好基本的目录结构和基础文件

像常见的Vue-cliReact-cli就是专门针对各自框架使用的脚手架工具。本文就另一款通用的脚手架工具yeoman进行简单的使用说明。

阅读全文 »

性能优化一直是代码开发阶段不可避免也十分重要的环节,本文将从内存管理这一方面来阐述JavaScript的优化方法,具体包括:内存管理概述、垃圾回收与常见的GC算法、V8引擎的GC算法、js语言内存优化实例。

performance

阅读全文 »

函数式编程是很早就出现的一种编程范式,就像面向过程编程、面向对象编程一样,函数式编程作为一种编程范式,有自己的关注重点和编程理念。

函数式编程(英语:functional programming)或称函数程序设计泛函编程,是一种编程范式,它将电脑运算视为函数运算,并且避免使用程序状态以及易变对象。其中,λ演算(lambda calculus)为该语言最重要的基础。而且,λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。

function

本文将结合js语言梳理函数式编程的理念、函数的一些特点、函数式编程的基本概念以及函子的应用,如:高阶函数、闭包、纯函数、柯里化、函数组合、常用的一些函子等。

阅读全文 »

TypeScriptJavaScript的超集。

我们知道Javascript是弱类型语言,而Typescript的出现就是为了解决js类型系统的不足,由于ts始于js,归于js的特点,从js过渡到ts是很容易的,且ts的类型系统提高了js代码的质量,我们有必要学习这门优秀的语言。

本文从js类型系统的问题出发,阐述ts构建的缘由和优势,Folw静态类型检测方案,以及ts基本的使用规则。

阅读全文 »