Node.js开发,windows还是linux?

时间:2012-09-25 10:49:32

标签: windows linux node.js virtualization

我对Node.js平台上的Web开发感兴趣。我的主机操作系统是Windows 7.设置开发环境的首选方法是什么。直接在主机或基于Linux的虚拟机上运行它?这两种方法之间有什么利弊?

如果我使用虚拟机,我是否仍然可以在Windows中运行文本编辑器和Web浏览器(出于性能原因)?

5 个答案:

答案 0 :(得分:40)

从经验来看,使用 Linux Docker。

编辑使用Docker。烘焙依赖项,在运行时挂载项目,仅固定到特定版本的LTS节点。我在一个不可运行的项目上采用了2GB的docker镜像,导致失去被迫升级到新软件包的日子。 - 2018/04/10

但是从过去8年在基于Linux的环境中开发的人,以及在Windows网络环境中使用nodejs开发软件的过去6个月,这是我的发现,令人震惊或其他......

Windows上的问题:

  • 无法有效利用docker 最新版本的docker工具包解决了这个问题,就我而言。因人而异。
  • 大多数节点模块都需要node_gyp,表面看起来并不成问题(因为gyp应该是跨平台编译器),除非你深入研究在windows上运行它所需要的东西:安装visual studio会起作用。由于以下几个原因,这对我很不好:
  • 我通常在linux上,所以我从不想使用visual studio。
  • 完全最荒谬的想法是,在Windows上编译内容至少需要3GB的IDE安装...不是libs,而是一个完全单片的GUI软件,我永远不会发布。< / LI>
  • 相当于debians build-essentials的窗口实际上是一个完全不同的庞大的病人名为gui的集合,只有分散在互联网上的安装人员都需要特定的安装顺序。与sudo apt-get install build-essentials相比,这是非常耗费时间并且充满了隐藏的陷阱。

  • 在Windows上开发将允许您使用混合大小写路径名称的坏习惯,除非您的团队要么遵循/强制执行严格的策略,否则这将是以后出现问题的滑坡。

    < / LI>
  • 虽然Windows在路径中支持超过256个字符,但重要的工具却没有。进入左侧阶段:rimraf和robocopy ......呃。

  • windows终端很糟糕...默认shell也是如此:cmd.exe ... Powershell的语法过于冗长,而且不符合我的口味......安装Cmder对此有所帮助,但Cmder与cmd.exe接口的唯一方法是将按键复制到隐藏的窗口终端运行cmd.exe。 (lolwut)。使用更模块化的shell(zsh,bash等),Cmder可以更好地工作。 update :我现在使用带有pshazz和scoop的powershell,这实际上很有用。

  • 仍然改进了shell和终端的情况,nodejs为 windows仍会假设你的环境变量是%OF %% THE% %WINDOWS %% VARIETY%...不是$ UNIX $ STYLE。所以你基本上就是 使用bower和npm主要来自cmd.exe ...更多呃。我不会&#39;似乎已经出现了这个问题,因为我已经将cross-env和指挥官或者yargs混合在一起。

    • 您还需要为Windows安装python,这不是问题,因为choco存在并让您回到那里。 更新:看看boxstarter,有助于使用食谱自动化您的新机器设置(或者您实际上可以毕业使用ansible或salt)。

    • 经验丰富的python,ruby开发人员会告诉你,当你需要重新访问它们时,旧项目将需要他们的引擎孤岛版本(升级到新版本大多不合适或不实用,请阅读:兔子洞),所以你想要像rvm和virtualenv这样的东西......

    • nvm(仅适用于unix系统linux和macosx),因为它是 bash脚本的集合。我建议使用ZSH作为shell以及Zgen和Tarrasch/zsh-autoenv插件。

    • nodeenv,更有可能......一个与virtualenv集成的python程序。有些人喜欢这个。我没有问题,但我们的团队使用nvm。
    • 然而,你最好使用nvm-windows因为&#34;原因&#34;。从头开始,在Windows上使用nodist ...吧更好的选择,你不需要担心某种类型的autoenv,因为nodist by design处理这个问题。

在Windows上安装:

  1. 安装chocolatey
  2. choco install cmder nodejs python2 choco install python2
  3. 安装http://scoop.sh,然后使用它来安装pshazz。
  4. 删除全局手动安装的任何节点版本。
  5. 安装nvm-windows 安装nodist。
  6. 安装visual-studio 2012 express,然后如果你珍惜你的cpu周期就永远不会启动它。这可能是一种过度杀伤力,因为微软发布了相当于build-essentials的东西。
  7. 安装Windows 7/10 64bit sdk
  8. Linux上的问题:

    tldr;使用nvm。除了以下原因之外的其他原因。

    • 您必须将全局npm node_modules路径设置为用户拥有的目录(我已经开始使用~/.local/share/npm)。令人愉快的是,我发现nodejs的windows安装正确(可能不是故意的)。使用nvm时没有问题。
    • Ubuntu已经有一个名为node的二进制文件,因此默认情况下#!/usr/bin/env node不会运行nodejs。幸运的是,debian系统有一个简洁的管理工具来控制env二进制发出的内容:update-alternatives。忽略在这里使用符号链接的建议,这只会在以后以微妙的方式引起问题。在使用nvm时也是一个非问题。

    在Linux上安装:

    $ 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
    

    的引用:

答案 1 :(得分:21)

我们有一个系统,通过它我们只使用配置文件,它处理我们所有的问题,如路径差异("c:\blarg" vs "~user/blarg"),作为奖励,让我们控制调试和生产环境。

Node.js是跨平台的,所以我们完全让开发人员在各种计算机上工作,这根本不是问题。

这是我在文件存储项目中使用的示例配置文件:

/**
 * 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

拥抱多元文化!!!

答案 2 :(得分:5)

我也在Windows 7上使用Virtualbox和Linux(debian)客户,我推荐它,因为我自己更快地在命令行中执行某些操作然后在Windows中单击arround。

另一个不错的功能是,如果您将VM放在USB记忆棒上,您可以随身携带并在安装Virtualbox主机的任何地方使用它,这样您就可以随身携带整个开发环境。

在Windows中使用您喜欢的文本编辑器或浏览器完全没问题,只需安装samba并将您的主目录安装到Windows中即可。 您的浏览器也是如此,因为VM只是LAN中的另一台计算机,而不是将您的浏览器指向localhost,将其指向VM Ip并且您没事。

显而易见的是,如果你没有任何Linux使用经验,你应该坚持使用Windows,因为它需要你花一些时间才能进入它。

答案 3 :(得分:2)

只是我的两分钱甚至更少:

我建议你第三个选择:双重安装windows / ubuntu设置(最好是ubuntu dist,这是最友好的)并研究这个选项,这样你就会更熟悉linux / unix甚至iOS甚至可以让你更好地理解windows和更好的程序员。有时虚拟框太慢,而linux对资源非常有效。

如果您有能力安装虚拟机,您还可以安装一个linux distribution,并熟悉这个基于Web构建的操作系统的语言/系统

答案 4 :(得分:0)

我真的很喜欢使用git bash在windows上编码node.js: http://blog.nodester.com/post/19902515151/tips-for-windows-users

然后运行VirtualBox似乎更快更容易。鉴于在投入生产之前我仍然使用Virtual Box进行测试。