我对基于 Node.js 平台的 Web 开发感兴趣。我的主机操作系统是 Windows 7。设置开发环境的首选方式是直接在主机上运行还是在基于 Linux 的虚拟机中运行?这两种方法之间有什么利弊呢?
如果选择虚拟机,我是否仍然可以在 Windows 中运行文本编辑器和 Web 浏览器(出于性能方面的考虑)?
我对基于 Node.js 平台的 Web 开发感兴趣。我的主机操作系统是 Windows 7。设置开发环境的首选方式是直接在主机上运行还是在基于 Linux 的虚拟机中运行?这两种方法之间有什么利弊呢?
如果选择虚拟机,我是否仍然可以在 Windows 中运行文本编辑器和 Web 浏览器(出于性能方面的考虑)?
根据经验,使用 Docker 而非 Linux。
编辑 使用 Docker。将依赖项打包在其中,在运行时挂载项目,仅针对特定版本的 LTS Node。与导致数天时间浪费强制升级到新包的无法运行的项目相比,我选择一个 2GB 的 Docker 镜像。
但是,作为一个在基于 Linux 的环境中开发了最近8年,并在过去6个月中在 Windows dot net 环境下使用 nodejs 开发软件的人来说,这是我的发现,不管是否令人震惊...
Windows终端及默认shell(cmd.exe)很糟糕...Powershell的语法过于冗长且不符合我的口味... 安装Cmder可以缓解这个问题,但Cmder与cmd.exe交互的唯一方法基本上是将按键复制到运行cmd.exe的隐藏窗口中(lolwut). Cmder在更加模块化的shell(zsh、bash等)中的表现要好得多。 更新:我现在使用带有pshazz和scoop的powershell,实际上非常好用。
虽然终端和shell情况已经得到改善,但windows下的nodejs仍会假定您的环境变量为%OF% %THE% %WINDOWS% %VARIETY%... 而不是$UNIX $STYLE。因此,您基本上将主要从cmd.exe使用bower和npm... 更加让人沮丧。 我似乎不再遇到这个问题了,因为我混合使用了cross-env
和commander或yargs。
您还需要为Windows安装Python,这不是问题,因为有choco存在并支持您。 更新:看看boxstarter,它将通过配方(或者您可能真的可以升级到使用ansible或salt)来自动化新机器设置。
有经验的Python、Ruby开发人员将告诉您,旧项目需要其引擎版本单独存储,以便在需要重新访问它们时使用(升级到较新版本通常不切实际或可行,即:兔子洞),因此您需要类似rvm和virtualenv的东西...
在 Unix 系统中,nvm 只能在 Linux 和 macOS 上使用,因为它是一组 Bash 脚本。我建议您使用 ZSH 作为您的 shell,并使用 Zgen 和 Tarrasch/zsh-autoenv
插件。
nodist
在 Windows 上会是更好的选择......非常好的选择,您不需要担心某种自动环境变量,因为 nodist 设计上就处理了这个问题。choco install cmder nodejs python2
choco install python2
http://scoop.sh
,然后使用它来安装 pshazz。简而言之,请使用 nvm。有更多原因可以选择它。
~/.local/share/npm
)。令人愉悦的是,这是我发现的 Windows 安装 Node.js 做对了的事情(可能不是有意的)。node
的二进制文件,因此默认情况下 #!/usr/bin/env node
将不会运行 nodejs。幸运的是,Debian 系统有一个方便的管理工具用于控制 env
二进制文件发出的内容:update-alternatives
。请忽略在此处使用符号链接的建议,这只会在以后以微妙的方式引起问题。$ sudo apt-get install git-core git-flow build-essentials python-dev python- pip
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash
$ npm config set prefix ~/.local/share/npm
$ nvm install stable
$ nvm alias default stable
参考资料:
"c:\blarg"
与"~user/blarg"
),并且作为奖励,让我们可以控制调试和生产环境之间的差异。/**
* All of these are mandatory except for log_level (which defaults to "info", 1)
* and log_echo_to_console (which defaults to false)
*/
exports.config = {
log_level: 0,
log_file: "/path/to/send.log",
request_log_file: "/path/to/send_requests.log",
log_echo_to_console: true,
port_number: 8088,
no_notification_emails: true,
image_url_base: "http://s3.amazonaws.com/", // MAKE SURE THIS ENDS IN "/"
tmp_file_folder:"/tmp/",
s3_info: {
key: 'xxxxxx',
secret: 'yyyyy',
file_bucket: 'sendtransfer/',
},
backend_info: {
db_info: {
server: "localhost",
user: "db_user",
password: "secret",
database: "SendRemote",
pooled_connections: 125,
idle_timeout_millis: 30000
},
memcache_info: {
host: "127.0.0.1",
port: "31111",
pooled_connections: 200,
timeout: 20000
}
},
debug_server: true
};
对于 Windows 机器,只需更改路径即可。没问题!
然后在代码中,您可以直接输入:
var local = require('local.config.js');
fs.writeFile(local.config.log_file);
// etc
拥抱多元文化!!!
我非常喜欢在Windows上使用Git Bash编写Node.js代码: http://blog.nodester.com/post/19902515151/tips-for-windows-users
它似乎比在VirtualBox上运行更快更容易。尽管如此,在进入生产之前,我仍然会使用Virtual Box进行测试。