繁体   English   中英

Node.js开发,Windows还是Linux?

[英]Node.js development, windows or linux?

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

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

嗯,从经验,使用 的Linux 码头工人

编辑使用Docker。 烘焙依赖关系,在运行时安装项目,仅固定到LTS节点的特定版本。 我将在一个无法运行的项目上使用一个2gb的docker映像,导致几天的时间被迫升级到新软件包。 -2018/04/10

但是对于过去8年在基于linux的环境中进行开发并且过去6个月在Windows dot net环境中使用Node.js开发软件的人来说,这是我的发现,令人震惊或其他...

Windows上的问题:

  • 无法有效利用Docker 就我而言,最新版的docker工具包解决了这个问题。
  • 大多数节点模块都需要node_gyp,从表面上看似乎没有问题(因为gyp应该是跨平台编译器),除非您深入研究如何在Windows上进行此工作:除了安装Visual Studio之外,什么都无法工作。 这对我来说很糟糕,原因如下:
  • 我通常在linux上,所以我永远不需要使用Visual Studio。
  • 这完全是最荒谬的想法,在Windows上编译某些东西至少需要安装3GB的IDE ...不是libs,而是一个我永远不会启动的完全单片的GUI软件。
  • Windows上相当于Debians build-essentials的Windows实际上实际上是一个分散的,名称不正确的gui集合,它们仅散布在Internet上,并且只需要特定的安装顺序,它们分散在Internet上。 sudo apt-get install build-essentials相比,这sudo apt-get install build-essentials耗时,并且充满了隐藏的陷阱。

  • 在Windows上进行开发将使您习惯于混用大小写路径名,除非您的团队有严格的政策要遵循/强制执行,否则以后将很容易遇到问题。

  • 虽然Windows在路径中支持超过256个字符,但重要的工具却不支持。 进入左阶段:rimraf和robocopy ...嗯。

  • Windows终端很烂...默认外壳也是如此:cmd.exe ... Powershell的语法过于冗长,不符合我的喜好...安装Cmder可以在某种程度上缓解这种情况,但是Cmder与cmd.exe进行交互的唯一方法是基本上将击键复制到运行cmd.exe的隐藏Windows终端中。 (大笑)。 Cmder在具有更高模块化(zsh,bash等)的shell上工作得更好。 更新 :我现在将Powershell与pshazz和scoop一起使用,实际上使用起来很愉快。

  • 在仍然改善了外壳和终端的情况之后,用于Windows的nodejs仍将假定您的环境变量为%OF%%THE%%WINDOWS%%VARIETY%...而不是$ UNIX $ STYLE。 因此,您基本上将主要使用cmd.exe中的bower和npm ...更多。 自从我合并了cross-env和Commander或yargs之后,我似乎再也没有这个问题了。

    • 您还需要为Windows安装python,这不是问题,因为choco存在并且已经回到了那里。 更新 :看看boxstarter,它将帮助您使用配方自动完成新机器的设置(或者实际上可以升级为使用ansible或盐)。

    • 经验丰富的python,ruby开发人员会告诉您,当您需要重新访问旧项目时,需要使用旧版本的引擎(升级到较新版本通常是不方便或不实际的,请阅读:Rabbit Hole),因此您将想要像rvm和virtualenv ...

    • nvm(仅在unix系统linux和macosx上工作),因为它是bash脚本的集合。 我建议将ZSH与Zgen和Tarrasch/zsh-autoenv插件一起用作外壳。

    • nodeenv,这很有可能...与virtualenv集成的python程序。 有些人喜欢这样。 我没有问题,但是我们的团队使用了nvm。
    • 但是,最好使用nvm-windows,因为“原因”。 从头开始,在Windows上使用nodist ...是更好的选择,您无需担心某种autoenv,因为由nodist设计可解决此问题。

在Windows上安装:

  1. 安装巧克力
  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周期,请不要启动它。 由于Microsoft已发布等效于build-Essentials的命令,因此这可能是过大的杀伤力。
  7. 安装Windows 7/10 64位SDK

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

参考资料:

我们有一个系统,可以通过它使用一个配置文件,该文件可以处理所有问题,例如路径差异( "c:\\blarg""~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

拥抱多元文化!!!

我也在Windows 7上,并且将Virtualbox与Linux(debian)来宾一起使用,我会推荐它,因为我自己可以在命令行中更快地执行一些操作,然后在Windows中单击arround。

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

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

这里最明显的缺点是,如果您没有Linux经验,那么您可能应该坚持使用Windows,因为这将需要一些时间才能使用它。

只是我的两美分,甚至更少:

我会建议您的第三个选择:双重安装Windows / ubuntu安装程序(最好是gui友好的ubuntu dist)并以此方式研究此选项,您将更加熟悉linux / unix甚至iOS,甚至使您更好地了解Windows和成为更好的程序员。 有时候虚拟机太慢了,而Linux在资源方面却非常有效。

如果您具有安装虚拟机的能力,则还可以尝试安装linux发行版,并熟悉很多网络所基于的操作系统的这种语言/系统。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM