zoukankan      html  css  js  c++  java
  • Node.js基础

    Node简介

    根据官方文档可以知道,node就是一个给予谷歌v8引擎的一个javascript的运行时,可以理解为运行js的一个虚拟机。他使用的是一个 事件驱动,非阻塞I/O模型 ,他是将js的运行环境搬到了服务器端,和客户端没有一点关系。是一个纯服务端的东西,node只是为js提供了一个平台。node里面其实还分了两块,一是封装了v8引擎,目的是为了执行es(如定义变量,定义函数等),另外一个提供了大量的工具库,是帮助node实现各种功能的,提供了一些以前js的环境办不到的事情,比如文件操作,网络操作,操作系统的操作。
        既然node是一个平台(所谓的平台就是用来运行特定语言的),也就意味着node是用来运行语言的,那么java也是语言,node能运行java吗?据nodejs创始人Ryan Dahl回忆,他最初是选择了Ruby这门语言,但是Ruby这门语言的虚拟机效率不怎么样最终放弃了,按照这种思路,貌似node将java的虚拟机集成进来应该可以运行java,但node作者最终选择了javascript。这样js就实现了在服务端运行的可能,js运行在node平台上(分为v8部分,用来执行es,和大量的工具库组件(API)称之为libuv,提供了以前js的环境办不到的事,如文件操作,网络操作等等)。
    知道了什么是node,应该还要清楚node在web中有什么用途?
        (1)node可以接受客户端用户的所有请求,并且能够快速的给出响应,因此node可以用来做网站。
        (2)node可以作为一个中间层来来分发调用数据接口,比如有一个网站数据是有java提供的,我们可以让node作为一个中间曾,来接受用户的请求,然后通过node来调用java数据接口,获取到数据后直接在node层面做html的瓶装,然后将渲染好的页面直接给用户。为什么要这样做,直接请求java接口不行吗,这是因为node被称之为高性能的web服务器,在并发和抗压方面都比传统的平台要好很多,因此这样一包装可以极大的减轻服务器的开发。
        通过上面的两点,可以总结出,node在web中要么从前端页面到后端服务全包了,一个是只做其中的一点。
        一言以蔽之,node就是一个javascript的运行环境(平台),他不是一门语言,也不是javascript的框架。可以用来开发服务端应用程序,web系统。其特点是体积小,快速,高性能。

    下载地址

    https://nodejs.org/en/download/

    NPM简介

    简单的说,npm就是JavaScript的包管理工具。类似Java语法中的maven,gradle,python中的pip。

    npm是和Nodejs一起并存的,只要安装了Nodejs,npm也安装好了,安装好Nodejs之后。打开终端,执行如下命令,检查是否安装成功

    C:Usersfuyong>node -v
    v6.10.3
    
    C:Usersfuyong>npm -v
    3.10.10
    

    npm初始化

    在去下载包之前,首先先让当前项目的包进行初始化操作,进入项目目录,执行命令:

    npm init
    

    运行这个命令后,它会询问一些关于包的基本信息,根据实际情况回答即可。如果不喜欢这种方式,可以使用npm init --yes命令直接使用默认的配置来创建package.json文件,最后根据需要修改创建好的package.json文件即可。

    {
      "name": "01-studynpm",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }

    如果每一项参数都使用默认值,则只需要输入:

    npm init --yes

    主要字段的含义如下:

    • name: 模块名, 模块的名称有如下要求:

      • 全部小写
      • 只能是一个词语,没有空格
      • 允许使用破折号和下划线作为单词分隔符
    • version: 模块版本信息

    • description:关于模块功能的简单描述,如果这个字段为空的话,默认会从当前目录的READMD.mdREADME文件读取第一行内容作为它的默认值。

    • main: 模块被引入后,首先加载的文件,默认为index.js

    • scripts: 定义一些常用命令入口

    关于最后一个英文的意思,我们可以证明,当我执行npm init之后,会自动的生成package.json的文件。

    安装模块

    使用npm install会读取package.json文件来安装模块。安装的模块分为两类
    dependenciesdevDependencies,分别对应生产环境需要的安装包和开发环境需要的安装包。

    同样在安装模块的时候,可以通过指定参数来修改package.json文件,以jquery和webpack做例子

    npm install jquery --save
    
    npm install webpack --save-dev

    执行以上命令,便可以安装对应的包到执行命令的当前目录,并创建一个node_modules的文件夹,然后把需要安装的安装包下载到里面。

    打开package.json文件会发现:

    如需下载不同版本的模块

    npm install jquery@2.0.1 --save
    

    如需卸载模块

    npm uninstall jquery --save

    使用cnpm(淘宝镜像)

    使用npm下载依赖时,由于是从国外的网站上下载内容,所以可能经常会出现不稳定的情况,所以需要下载cnpm代替npm,cnpm是国内淘宝的做的,在国内使用稳定。 

    1.下载cnpm

    使用npm下载依赖时,由于是从国外的网站上下载内容,所以可能经常会出现不稳定的情况,所以需要下载cnpm代替npm,cnpm是国内淘宝的做的,在国内使用稳定。 

    $ npm install -g cnpm --registry=https://registry.npm.taobao.org

    2.使用cpm

    cnpm install jquery --save
    

     

  • 相关阅读:
    failed: unacceptable content-type: text/html
    iOS button点击更换图片
    支付宝ios SDK官方下载页面
    xcode6 中使用OC代码时,在NSObject的子类中报错
    CocoaPods安装和使用教程
    Mac 下安装Ruby环境
    iOS .a与.framewofk
    Couldn't find preset "es2015" relative to directory问题解决
    yarn依赖管理工具的使用
    java.io.IOException: Could not delete path 'D:mycode eactnativeSecondTestandroidappuildgeneratedsource eleaseandroidsupportv7
  • 原文地址:https://www.cnblogs.com/fu-yong/p/9069329.html
Copyright © 2011-2022 走看看