Sublime Text 3 有哪个插件可以使ES6sublime 语法高亮插件

Sublime Text3关于react的插件——react语法提示&代码格式化 - 简书
Sublime Text3关于react的插件——react语法提示&代码格式化
背景: 最近因为项目准备迁移切换技术栈到react~所以研究了一波sublime关于react的插件,很多推荐已经写得很详细,这里就补充一下语法提示和代码格式化的插件。1.: react
es6 语法提示同一样,作为react语法提示,但是支持es6语法。安装:1.安装Sublime
。通过命令行打开: ?+shift+p(MacOS/Linux)2.输入install, 选中Package Control: Install Package3.输入React, 选中React ES6 Snippets安装以后即可使用,如图所示:
其他代码段提示参见github:2. :jsx语法代码格式化
虽然HTML-CSS-JS Prettify和jsformat都支持jsx格式化,但是因为某些特殊字符处一定会有换行让人难以接受,例如import时:
jsformat格式化后
类似的问题会导致代码校验时无法通过,并且在代码简洁程度上也让人难以接受。而能够帮助搞定这个问题。上图格式化后会变成如下效果:
jsfmt格式化后效果
所以这里强烈推荐安装。安装方法:1.打开命令面板Package Control: Install Package -& 输入jsfmt选中。2.修改设置Preferences -& Package Settings -& Sublime JSFMT:
代码复制请到 Setting中
3.设置代码快捷键:a. Preferences -& Key Bindings - Userb.添加配置:
{"keys":["ctrl+q"],"command":"format_javascript"}设置后即可选中代码再通过快捷键格式化代码~其他的ES6、React.js、jsx代码高亮等可以参见
美团金融孵化前端工程师~1、操作Ctrl+Shift+P , 然后在弹出的框内输入Package Control: in,2、选择Package Control: install package,3、等待再次弹出输入框,输入框弹出后,输入Babel,找到Babel syntax..,并回车安装,安装完后并不会高亮,需要设置4、Sublime3才有的插件,支持ES6、JSX语法高亮。5、菜单-&View-&Syntax-&Open all with current extension as...-&Babel-&JavaScript(Babel) 高亮了,你的可以了吗?6、ES6语法要加上&script type="text/ecmascript-6"&声明
刚开始在JSX文件格式化后惨不忍睹,其实配置一个属性就可以支持JSX语法格式化。
菜单-&Preferences-&Package Settings-&JsFormat-&Settings-User加入以下代码
"e4x": true,//支持jsx格式化
"format_on_save": true//保存立即格式化,看个人喜好
这个html标签自动补全的神插件相信很多人都用上了,非常便捷,现在可以通过配置实现JSX的html内容自动补全。
安装完Emmet后会自动安装一个PyV8的依赖插件,但网络不稳定会失败,可以通过自行下载。
下载地址: /emmetio/pyv8-binaries#readme
下载完后新建一个PyV8文件夹,把下载的包解压到该文件夹中,放到 C:\Users\yourname\AppData\Roaming\Sublime Text 3\Installed Packages下,与Emmet同一个文件夹下(Emmet安装完是在Installed Packages下而不是Packages) 。
菜单-&Preferences-&Key Bindings - User加上以下代码(keys就是触发自动补全的按键,可自定义)
"action": "expand_abbreviation"
"command": "run_emmet_action",
"context": [{
"key": "emmet_action_enabled.expand_abbreviation"
"keys": ["tab"],
"command": "expand_abbreviation_by_tab",
"context": [{
"operand": "source.js",
"operator": "equal",
"match_all": true,
"key": "selector"
"key": "preceding_text",
"operator": "regex_contains",
"operand": "(\\b(a\\b|div|span|p\\b|button)(\\.\\w*|&\\w*)?([^}]*?}$)?)",
"match_all": true
"key": "selection_empty",
"operator": "equal",
"operand": true,
"match_all": true
看下效果:
自动补全的是className而不是class,so far so good!
(坑:网上有些教程是说复制PyV8文件夹到Packages,当按tab键,死活无效,这时ctrl+`看Sublime3的控制台报了这个错误:
AttributeError: 'module' object has no attribute 'JSContext'
被折腾了很久才知道PyV8必须要和Emmet同目录。)
1.首先安装SublimeLinter、SublimeLinter-jshint、SublimeLinter-jsxhint、SublimeLinter-contrib-eslint插件。
2.然后命令行全局安装
npm install -g eslint
npm install -g babel-eslint
npm install -g eslint-plugin-react
npm install -g jsxhint
3.以ES6语法检查为例,在项目工程根目录新建.eslintrc,输入
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
"rules": {
"semi": ["error", "always"]
详细配置参考 http://eslint.org/docs/user-guide/configuring
4.打开Sublime3,菜单-&Tools-&SublimeLinter-&Toggle Linter...就可以打开js、jsx、es6检查规则。注意:当使用es6开发时务必把jshint关掉,否则报一堆警告错误。
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。
也就是说,ES6就是ES2015。
虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了。所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了...
在我们正式讲解ES6语法之前,我们得先了解下Babel。
Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。大家可以选择自己习惯的工具来使用使用Babel,具体过程可直接在Babel官网查看:
let, const, class, extends, super, arrow functions, template string, destructuring, default, rest arguments这些是ES6最常用的几个语法,基本上学会它们,我们就可以走遍天下都不怕啦!我会用最通俗易懂的语言和例子来讲解它们,保证一看就懂,一学就会。
这两个的用途与var类似,都是用来声明变量的,但在实际运用中他俩都有各自的特殊用途。首先来看下面这个例子:
var name = 'zach'
while (true) {
var name = 'obama'
console.log(name)
使用var&两次输出都是obama,这是因为ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。第一种场景就是你现在看到的内层变量覆盖外层变量。而let则实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效。
let name = 'zach'
while (true) {
let name = 'obama'
console.log(name)
另外一个var带来的不合理场景就是用来计数的循环变量泄露为全局变量,看下面的例子:
var a = [];
for (var i = 0; i & 10; i++) {
a[i] = function () {
console.log(i);
上面代码中,变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。而使用let则不会出现这个问题。
var a = [];
for (let i = 0; i & 10; i++) {
a[i] = function () {
console.log(i);
再来看一个更常见的例子,了解下如果不用ES6,而用闭包如何解决这个问题。
var clickBoxs = document.querySelectorAll('.clickBox')
for (var i = 0; i & clickBoxs. i++){
clickBoxs[i].onclick = function(){
console.log(i)
我们本来希望的是点击不同的clickBox,显示不同的i,但事实是无论我们点击哪个clickBox,输出的都是5。下面我们来看下,如何用闭包搞定它。
function iteratorFactory(i){
var onclick = function(e){
console.log(i)
var clickBoxs = document.querySelectorAll('.clickBox')
for (var i = 0; i & clickBoxs. i++){
clickBoxs[i].onclick = iteratorFactory(i)
const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。
const PI = Math.PI
PI = 23 //Module build failed: SyntaxError: /es6/app.js: "PI" is read-only
当我们尝试去改变用const声明的常量时,浏览器就会报错。const有一个很好的应用场景,就是当我们引用第三方库的时声明的变量,用const来声明可以避免未来不小心重命名而导致出现bug:
const monent = require('moment')
这三个特性涉及了ES5中最令人头疼的的几个部分:原型、构造函数,继承...你还在为它们复杂难懂的语法而烦恼吗?你还在为指针到底指向哪里而纠结万分吗?
有了ES6我们不再烦恼!
ES6提供了更接近传统语言的写法,引入了Class(类)这个概念。新的class写法让对象原型的写法更加清晰、更像面向对象编程的语法,也更加通俗易懂。
class Animal {
constructor(){
this.type = 'animal'
says(say){
console.log(this.type + ' says ' + say)
let animal = new Animal()
animal.says('hello')
上面代码首先用class定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。简单地说,constructor内定义的方法和属性是实例对象自己的,而constructor外定义的方法和属性则是所有实例对象可以共享的。
Class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。上面定义了一个Cat类,该类通过extends关键字,继承了Animal类的所有属性和方法。
super关键字,它指代父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。
ES6的继承机制,实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。
P.S 如果你写react的话,就会发现以上三个东西在最新版React中出现得很多。创建的每个component都是一个继承<ponent的类。
这个恐怕是ES6最最常用的一个新特性了,用它来写function比原来的写法要简洁清晰很多:
function(i){ return i + 1; }
简直是简单的不像话对吧...如果方程比较复杂,则需要用{}把代码包起来:
function(x, y) {
除了看上去更简洁以外,arrow function还有一项超级无敌的功能!长期以来,JavaScript语言的this对象一直是一个令人头痛的问题,在对象方法中使用this,必须非常小心。例如:
class Animal {
constructor(){
this.type = 'animal'
says(say){
setTimeout(function(){
console.log(this.type + ' says ' + say)
var animal = new Animal()
animal.says('hi')
运行上面的代码会报错,这是因为setTimeout中的this指向的是全局对象。所以为了让它能够正确的运行,传统的解决方法有两种:
第一种是将this传给self,再用self来指代this
says(say){
var self =
setTimeout(function(){
console.log(self.type + ' says ' + say)
2.第二种方法是用bind(this),即
says(say){
setTimeout(function(){
console.log(this.type + ' says ' + say)
}.bind(this), 1000)
但现在我们有了箭头函数,就不需要这么麻烦了:
class Animal {
constructor(){
this.type = 'animal'
says(say){
setTimeout( () =& {
console.log(this.type + ' says ' + say)
var animal = new Animal()
animal.says('hi')
当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。
这个东西也是非常有用,当我们要插入大段的html内容到文档中时,传统的写法非常麻烦,所以之前我们通常会引用一些模板工具库,比如mustache等等。
大家可以先看下面一段代码:
我们要用一堆的'+'号来连接文本与变量,而使用ES6的新特性模板字符串``后,我们可以直接这么来写:
$("#result").append(`
There are &b&${basket.count}&/b& items
in your basket, &em&${basket.onSale}&/em&
are on sale!
用反引号(\)来标识起始,用${}`来引用变量,而且所有的空格和缩进都会被保留在输出之中,是不是非常爽?!
React Router从第1.0.3版开始也使用ES6语法了,比如这个例子:
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
看下面的例子:
let cat = 'ken'
let dog = 'lili'
let zoo = {cat: cat, dog: dog}
console.log(zoo)
//Object {cat: "ken", dog: "lili"}
用ES6完全可以像下面这么写:
let cat = 'ken'
let dog = 'lili'
let zoo = {cat, dog}
console.log(zoo)
//Object {cat: "ken", dog: "lili"}
反过来可以这么写:
let dog = {type: 'animal', many: 2}
let { type, many} = dog
console.log(type, many)
//animal 2
default很简单,意思就是默认值。大家可以看下面的例子,调用animal()方法时忘了传参数,传统的做法就是加上这一句type = type || 'cat'&来指定默认值。
function animal(type){
type = type || 'cat'
console.log(type)
如果用ES6我们而已直接这么写:
function animal(type = 'cat')
最后一个rest语法也很简单,直接看例子:
function animals(...types){
console.log(types)
animals('cat', 'dog', 'fish')
而如果不用ES6的话,我们则得使用ES5的arguments。
以上就是ES6最常用的一些语法,可以说这20%的语法,在ES6的日常使用中占了80%...
阅读(...) 评论()中国领先的IT技术网站
51CTO旗下网站
JavaScript 开发者必备的10款 SublimeText 插件
Sublime Text 是一款几乎所有开发者都必备的非常强大的软件。它是跨平台的、高度可定制化的、非常先进的文本编辑器,完美的弥补了全功能的 IDE(出了名的消耗资源)与命令行编辑器如VIM、Emacs(有陡峭的学习曲线)的不足。
作者:Sublime Text来源:Coder资源网| 16:22
&是一款几乎所有开发者都必备的非常强大的软件。它是跨平台的、高度可定制化的、非常先进的文本编辑器,完美的弥补了全功能的&(出了名的消耗资源)与命令行编辑器如、(有陡峭的学习曲线)的不足。
使得 Sublime 如此强大的原因之一是它的可扩展插件架构,这使得开发人员可以非常容易的扩展 Sublime 的核心功能,如代码补全、或远程接口文档的嵌入。Sublime Text 自身不带有插件管理功能,它们通常是通过一个称作的第三方工具来管理。给 Sublime Text 安装 Package Control ,请按照。
这篇文章中,我们将为你介绍10款 JavaScript 开发者必备的 Sublime Text 插件,每一个都可以改善你的工作流程,提升工作效率。现在就让我们开始吧。
列表第一个当然应该是 Bable。它为你的&ES6/2015 和 React JSX 代码添加语法高亮功能。插件安装后的第一件事就是把它设置为&.es6,&.jsx&甚至&.js&文件的默认语法。然而你需要注意的是最后一个如果你使用的是&ES3/5 的话,请不要使用 Bable 语法。
如果你还没有发现使用 Bable 的乐趣的话,我强烈建议你使用它。它可以把&ES6/2015 和 JSX 代码编译成 ES5。它与所有流行的架构工具与CLI 都整合的很好。它不支持旧版本的浏览器,如果你使用 IE10 以下的浏览器,请遵循它们的。
不幸的是,它不支持在 Sublime 中动态的编译 ES6,如果你有这个需要的话,我建议你看看&&。
JSHint 是一个 JavsScript Linter。它可以检测代码的样式、语法以及是否是常见的相关错误。无论你是新手还是老手,JSHint 都是必备的。查看&获取更多信息。
为了使&JSHint 能够运行,你需要通过 npm 全局安装 JSHint:
npm install -g jshint
一旦 JSHint npm 模块和 Sublime Text 插件安装完成,你就可以通过打开 JavaScript 文件并按&Ctrl+J&(Alt+J&在Linux/Windows上)来调用 JSHint。
jsFormat 是基于&&的,可以自动的帮你格式化 JavaScript 和 JSON。即使是你仅仅用它来格式化JSON也是值得的。对我来说最大的好处就是可以查看别的开发者代码或者是自己很久之前写的。
你可以通过&Preferences -& Package Settings -& JsFormat -& Settings - User&来设置你想要的代码格式。
为你的代码添加注释通常是件非常痛苦的事情。我不知道多少人会享受这个过程,但它却是必须的。DocBlockr 通过把注释变得简单来减少这个痛苦。安装完&DocBlockr 之后,你需要做的只是在新的一行输入&/*&或者&/**&,它会为你完成剩下的。
DocBlockr 还支持很多其他语言:CoffeeScript, TypeScript, PHP, ActionScript, Haxe, Java, Apex, Groovy, Objective C, C, C++, and Rust。
Sublime Text 自带的边栏文件操作选项非常的少。SideBarEnhancements 弥补了此缺点。值得注意的是,它为文件和文件夹还提供了&move to trash&、&open with..&甚至还有剪切板选项。
它是有 Angular-UI 团队开发的,可能是列表中比较偏大(但是是必须的)插件,它的功能包括:
AngularJS 核心指令的代码补全功能
自定义指令的指令完成
directives, controllers and filters的快速搜索
Angular相关的代码片段
GoToDocs for core AngularJS directives
由微软支持,该插件为&TypeScript 项目添加了代码补全、语法高亮、代码格式化以及扩展的导航功能。它还配备了一个构建系统,允许你把 TypeScript 编译到 JavaScript。
可以用&Tools -& Build System&进入Bulid系统,然后打开一个&.ts&结尾的文件,然后选择&Tools -& Build&或者直接按&Ctrl+B&,它会让你输入参数,直接就会在同一个目录输入JavaScript文件。唯一的条件是需要 Node 支持。
如果你使用&Ember.js 或者仅仅把&&作为模版语言,这款插件都是必备的。如果没有它,你最好把语法高亮关闭。
除了语法高亮,它还提供了各种表达式的标签触发器。例如输入&x-temp&然后按&TAB会生成:
type=&text/x-handlebars& data-template-name=&&
另外,如果输入&ifel&然后按&TAB&怎生成:
非常的顺手,对吗?
该上有所有的代码片段列表。
Better CoffeeScript 是原&&的 Fork,不幸的是原插件似乎已经被作者废弃,并且只支持Sublime Text 2。
该插件为使用&CoffeeScript 的开发者提供很多必要的代码高亮,并且不至于此。它给 Sublime 增加了一些命令,如检测语法的能力、编译文件、显示编译的JavaScript等。
你可以在细读它的各项设置与选项。
我知道现在jQuery在很多地方都失宠了,但它依然是非常有用的,如果你不建立一个完全互动的网站,或者你只是想在一个现有的应用程序中添加功能。
例如输入&$.a&然后选择&$.ajax&就会生成下面的内容:
url: '/path/to/file',
type: 'default GET (Other values: POST)',
dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
data: {param1: 'value1'},}).done(function() {
console.log(&success&);}).fail(function() {
console.log(&error&);}).always(function() {
console.log(&complete&);});
这就是为你准备的JavaScript 开发者必备的10款 Sublime Text 插件。我强烈建议你尝试其中的一两个,然后在评论中告诉我使用体验。或者说我没有列出某个你最喜欢的,也请在评论中给出,我可以考虑把它添加到列表中。
最后,请记住 Sublime Text 并不是免费的,它只是提供了一个无限期的试用版。单个许可证的价格是&$70 。如果你每天都在使用文本编辑器的话,这将是一个值得的投资。
来源:Coder资源网 &&
作者: Sublime Text
译文: 译者: Specs
【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条热点头条原创
24H热文一周话题本月最赞
讲师:26787人学习过
讲师:119782人学习过
讲师:12572人学习过
精选博文论坛热帖下载排行
本书共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设...
订阅51CTO邮刊Sublime Text 3配置React Native开发环境以及插件安装 & 创意应用
Sublime Text 3配置React Native开发环境以及插件安装
工欲善其事,必先利其器。对于新接触React Native的如我一般的小白来说,选择合适的编辑器会使效率提高。平时常用的也就是Sublime Text 3,这货有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境。
在笔者配置和试着写一个选择房产的Demo的过程中,主要用到三款插件,分别是:
babel-sublime
sublimeLinter-jsxhint
支持ES6, React.js, jsx代码高亮,对 JavaScript, jQuery 也有很好的扩展。关于 babel 的更多介绍可以看这里:
PC:Ctrl+shift+p
Mac:Cmd+shift+p
打开面板输入babel安装
打开.js, .jsx 后缀的文件;
打开菜单view, Syntax -& Open all with current extension as... -& Babel -& JavaScript (Babel),选择babel为默认 javascript 打开syntax
JSX 代码审查,实时提示语法错误, 帮助快速定位错误点.
PC上ctrl+shift+p(MacCmd+shift+p)打开面板输入sublimeLinter-jsx安装(依赖于 sublimeLinter)
安装 node.js
npm install -g jsxhint
npm install -g jsxhint
格式化 js 代码
jsformat 是 sublime 上 js 格式化比较好用的插件之一,通过修改它的e4x 属性可以使它支持 jsx。
PC上ctrl+shift+p(MacCmd+shift+p)打开面板输入JsFormat安装.
打开preferences -& Package Settings -& JsFormat -& Setting - Users,输入以下代码:
"e4x": true,
// jsformat options
"format_on_save": true,
{&&"e4x": true,&&// jsformat options&&"format_on_save": true,}
即可保存时自动格式化,并支持 jsx 类型文件.
Related Posts
好玩的游戏App

我要回帖

更多关于 语法高亮插件 的文章

 

随机推荐