安装与配置nodejs

node

  1. 特点
    • 异步IO
    • 事件与回调函数
  2. 单线程
    • Node保持了JavaScript在浏览器中单线程的特点。在Node中,JavaScript与其余线程是无法共享任何状态的。
      • 优点:不需要像多线程那样处处在意状态的同步问题,没有死锁、没有线程上下文切换带来的性能开销
      • 缺点:无法利用多核CPU、错误会引起整个应用退出,应用的健壮性值得考验
      • 大量计算占用CPU导致无法继续调用异步IO
    • 在Node中长时间的CPU占用也会导致后续的异步IO发不出调用,已经完成的异步IO的回调函数也会得不到及时执行
  3. 应用场景
    • IO密集型:主要利用Node利用时间循环的处理能力,而不是启动每一个线程为每一个请求服务,资源占用极少
  4. 不适合的场景
    • 计算密集型程序
    • 单用户多任务型应用
    • 逻辑复杂的事务,Node.js更善于处理那些逻辑简单但访问频繁的任务
    • 不支持完整的Unicode,很多字符无法使用string表示(js标准的问题)

nodejs安装

  1. linux安装

     # tar -xvf node-v6.11.3-linux-x64.tar.xz -C /usr/local/
    使用tar解压出现错误 tar (child): xz:无法 exec: 没有那个文件或目录 
    
    #  yum install xz (解决以上问题)
    
    
    # ln -s /usr/local/node-v6.11.3-linux-x64/bin/node /usr/local/bin/node
    
    
    # ln -s /usr/local/node-v6.11.3-linux-x64/bin/npm /usr/local/bin/npm
    
    
    # node -v
    

npm

简介

  1. npm包管理器是一个由nodejs官方提供的第三方包管理工具,目前已经整合到nodejs中(npm只是一个完全由js实现的命令行工具)
  2. npm默认会从http://npmjs.org下载包,将包安装到当前目录node_modules下。将包安装到全局可以提高程序的重复利用程度,避免同样的内容多份副本,但是坏处是难以处理不同的版本依赖。
  3. npm [install/i] -g [package_name] 全局安装
  4. npm [install/i] [package_name] 本地安装(不会注册PATH变量)
  5. 使用全局安装的包不能通过require使用,但是可以通过npm link 命令打破限制,npm link express(不支持windows)

配置

  1. 全局文件夹设置

      # npm config set cache /Volumes/P/develope/npmRepository 设置全局缓存文件夹
      # npm config set cache node_global 设置全局模板文件夹
      # npm config ls -l 查看配置
  2. npm 模块安装时会在当前文件夹中产生node_modules目录,并在该目录中下载npm模块。而nodejs项目运行require一个模块时,会自动地在当前目录下的node_modules目录中加载所需的npm模块,因为可以直接将一个模块放到此目录下

多版本管理器

  1. nodejs更新速度很快,有时候新版本还会将旧版本的一些api废除。多版本管理器(nvm)就是用于在一台机器上维护多个版本的nodejs实例,方便按需切换。
  2. 命令

        # n --help
        # n 版本号    可以安装任意已经发布的nodejs,自动编译安装(/usr/local/n/versions)
  3. n无法管理通过其他方式安装的nodejs版本实例,必须通过n安装的nodejs才能管理多版本的nodejs

详解

  1. 项目所依赖的npm包放在node_modules目录下,此目录不应该被版本控制,也不应该修改此目录下的文件。
  2. package.json 文件两个作用
    • 描述项目
    • 列出依赖项
  3. package.json解析

            {
          "name": "node",
          "version": "0.0.0",
          "private": true,
          "scripts": {
            "start": "node ./bin/www"
          },
          "dependencies": {
            "body-parser": "~1.17.1",
            "cookie-parser": "~1.4.3",
            "debug": "~2.6.3",
            "express": "~4.15.2",
            "jade": "~1.11.0",
            "morgan": "~1.8.1",
            "serve-favicon": "~2.4.2"
          }
        }
     ^ 表示在下一个【主要版本号】之前,所有以指定版本号开始的版本都能用。
    

猜你喜欢

转载自blog.csdn.net/usagoole/article/details/80639577