在windows环境下基于sublime text3的node.js开发环境搭建

时间:2021-02-22 05:57:12

摘自:http://blog.sina.com.cn/s/blog_5a6efa330102vcla.html  (略有修改)

 

首先安装sublime text3,百度一堆,自己找吧。理论上sublime text2应该也可以。我只能说一句:这个软件实在是太强悍了。

 

跨平台,丰富的插件体系,加上插件基本上就是一个强悍的ide了。目前我在使用的主要是Emmet、Python、还有一些格式化的插件(xml,json),加上这次安装的node.js。

node.js的安装就不用多说了,直接http://nodejs.org/ 点击install下载window版本的安装程序后安装即可。默认的安装会将安装目录加到path环境变量中,这一步是为了后续使用node的时候,可以不用带路径,当然,后续在sublime text中安装好nodejs插件之后,也可以对node的路径进行一些自定义的设置。为了使用方便,建议增加到path环境变量。

SublimeText-Nodejs插件(https://github.com/tanepiper/SublimeText-Nodejs)

 

原本在sublime text的插件库里面有nodejs的插件,但是经过尝试安装后,发现无法修改编译设置,没找到Nodejs.sublime-build文件,后来在github上面看了下人家的安装说明之后再重新安装的。

安装Package Control;运行Sublime,按下快捷键Ctrl + `;在控制台中输入如下并回车;

代码如下:

版本Ver 2

import urllib2,os,hashlib; h = '2deb499853c4371624f5a07e27c334aa' + 'bf8c4e67d14fb0525ba4f89698a6d7e1'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', ' ')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')

 

版本Ver 3

import urllib.request,os,hashlib; h = '2deb499853c4371624f5a07e27c334aa' + 'bf8c4e67d14fb0525ba4f89698a6d7e1'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', ' ')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

 

安装也有二种方式:

 

1、直接下载压缩包后解压到sublime text的package目录中。查看package目录在哪可以通过菜单栏中的Preferences-->浏览程序包Browse Packages直接打开package目录。

 

2、使用git命令下载到package目录(git clone https://github.com/tanepiper/SublimeText-Nodejs "D:\ProgramFiles\Sublime Text 3\Data\Packages\nodejs")

修改编译选项,在package目录下的nodejs目录中,打开Nodejs.sublime-build,原始内容如下:

 

 {

  "cmd": ["node", "$file"],
  "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
  "selector": "source.js",
  "shell": true,
  "encoding": "cp1252",
  "windows":
  {
    "shell_cmd": "taskkill /F /IM node.exe & node $file"
  },
  "linux":
  {
    "shell_cmd": "killall node; /usr/bin/env node $file"
  },
  "osx":
  {
    "shell_cmd": "killall node; /usr/bin/env node $file"
  }
}

 

有2个地方需要修改,一个是编码,为了避免乱码code,需要改成cp936;另外一个是cmd命令,本身如果只是想简单的运行nodejs程序的话,windows下面的cmd可以直接 "cmd": ["node", "$file"],但是这样非常不利于开发环境,因为这样的话每次build都会重新启动一个node.exe进程,且会占用一个端口,这肯定是我们不希望的。上文中的cmd原本是想在启动node.exe之前讲node.exe进程都杀掉,然后再启动node.exe,但是这个命令写的不对,直接使用的话是编译不成功的。对cmd命令需要做简单的处理,修改好之后的Nodejs.sublime-build文件内容如下:

 {

  "cmd": ["node", "$file"],
  "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
  "selector": "source.js",
  "shell": true,
  // "encoding": "cp1252",
  "encoding": "utf8",
  "windows":
  {
    // "shell_cmd": "taskkill /F /IM node.exe & node $file"
    "shell_cmd": "taskkill /F /IM E:/DevelopTools/nodejs/node.exe & node $file"
  },
  "linux":
  {
    "shell_cmd": "killall node; /usr/bin/env node $file"
  },
  "osx":
  {
    "shell_cmd": "killall node; /usr/bin/env node $file"
  }
}

 

重启sublime text之后,配置就算完成了。我们写一小段代码来验证一下是否可以正常运行。

 

var http = require('http');

var os = require('os');

http.createServer(function (request, response) {

response.writeHead(200, {'Content-Type': 'text/plain'});

response.end('Hello World\n'); }).listen(3000);

console.log('Server running at http://127.0.0.1:3000/');

 

Ctrl+b编译这段代码之后,sublime text窗口中就会显示

Server running at http://127.0.0.1:3000/

 

若之前有运行的node进程在,则会先杀掉node进程,再启动node,显示如下:

 

成功: 已终止进程 "node.exe",其 PID 为 154588。

Server running at http://127.0.0.1:3000/

 

到此,服务端算是启动成功,打开浏览器,输入http://127.0.0.1:3000/,页面显示Hello World则表示交互正常。