美文网首页
NodeJs基础(node+nmp)

NodeJs基础(node+nmp)

作者: Is_JackieZhang | 来源:发表于2017-11-01 19:21 被阅读0次

    NodeJs

    用于服务器端开发,是执行js的ECMAScript标准,不包含DOM和BOM,但是部分API可以使用

    webstorm与svn关联:

    1. 配置svn
    2. file-->settings-->version Control--> Subversion-->Use command line client 取消勾选

    VCS-->checkout from version Control--> Subversion-->添加仓库地址(默认是http)--> 选择存储目录

    注意:文件名不要和与框架名称(node nodeJs )一模一样。容易引起冲突

    安装命令行工具(非必需)

    1. 安装命令行工具 slik Subversion

    2. 关联webstorm:file-->settings-->version Contol--> Subversion-->Use command line client 勾选并且选择路径--svn.exe
      注意:安装路径:不要有空格,特殊字符,纯英文

    命令行窗口

    别名:终端、shell、小黑屏;
    开启:win+R -->cmd-->回车;
    在Windows的命令行窗口中直接输入DOS命令对计算机进行操作

    常用命令

    • dir 列出当前目录下的所有文件/文件夹
      • .\:表示当前目录
      • ..\:表示上一级目录
    • cd 进入到指定目录中
      • cd ..\:返回上一级目录
    • tab键 自动补全
    • md+文件夹名:新建文件名
    • rd+文件夹名:删除文件夹
    • x: (d:):切换到指定的磁盘

    环境变量

    指的是系统中需要使用的变量
    path:用户path和系统Path

    • 此环境变量中保存很多路径,多个路径之间用 ; 隔开
    • 例如:%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
    • 当在命令行中访问一个文件时,系统首先会在当前目录下查询文件,如果找到了,则直接使用;如果找不到,则依次去path环境变量中查询,如果找到了则直接使用,如果没有找到,则继续查询下一个位置,直到找到为止,如果所有路径都没有找到该文件,则报错(作用域相似)
    • 如果某个文件需要在任意位置都能访问,可以添加到环境变量中
      注意:添加环境变量之后需要重启窗口;只需要指定到最终文件的文件夹

    进程&线路

    打开 Windows任务管理器可看到进程

    进程

    • 进程中保存了程序要执行所需要的一些必备的条件
    • 进程相当于工厂中的车间(工作计划)

    线程

    • 线程是CPU中的最小计算单位,程序需要通过线程来执行
    • 线程就相当于工厂中的工人
      • 单线程:程序由一个线程执行,如JS、nodeJs是单线程
      • 多线程:程序由多个线程同时执行 (并发问题)
        注意:多线程不一定就比单线程快

    Node.js

    node.js发展史

    • 瑞安·达尔 2009年 node的最初版本
    • 2010年1月Node的包管理器npm诞生
    • 2014年12月 ‘io.js’
    • 2015年9月 Node.js和io.js合并,Node4.0发布
      注意:Node.js 偶数版本是稳定版本,奇数版本是开发版本;是对ECMAScript的实现,BOM和DOM中大部分未实现

    Nodejs简介

    单线程:主线程是单线程+I/O线程池;底层C++,大部分基本模块是JavaScript;开发简单/硬件要求低 优化性能

    • 事件驱动:绑定事件
      • 服务器:接收用户请求,处理,并返回响应
        • 性能问题(速度)
        • 客户端 <--请求/响应--> Node服务器<--请求/响应--> 服务器 <--I/O操作--> 数据库(磁盘存储)
    • I/O操作 非阻塞
      • 阻塞 var a=10;alert(123);var b=20;
    • 异步I/O模型

    用途:web服务API;实时多人游戏;后端的Web服务,例如跨域、服务器端的请求;基于Web的应用;多客户端的通信

    安装Node.js

    • 官网下载:https://nodejs.org/en/
    • 运行Node.js
      • 命令行窗口 node
      • 退出:ctrl+c
    • 编写js文件--->命令行窗口--->node 文件名.js
      WellcomeNodejs
    • 关联webstorm:file--->settings--->Languages&Frameworks--->Node.js and NPM --->Node interpreter--->选择node.js路径
    • webstorm执行js:Terminal/右键--->Run

    node.js上的代码

    • 代码在服务器上运行,用户看不到
    • 编码不用考虑兼容问题
    • webstorm开启node核心代码(验证node代码):file--->settings--->Languages&Frameworks--->Node.js and NPM --->Coding Assistance--->enable

    CommonJs规范

    解决JavaScript的缺陷

    ECMAScript5 标准的缺陷

    • 没有模块系统 (计算机的组成就是模块系统)
      • jQuery 是模块,并不是模块系统
    • 标准库较少 (官方定义没有)
    • 没有标准接口
    • 缺乏管理系统 (对插件的管理)

    模块化

    如果程序设计达到一定规模程度则必须进行模块化;模块化有多种形式,但至少提供将代码分割为多个源文件的机制

    CommonJs规范

    主要是为了弥补当前JavaScript没有模块化标准的缺陷

    CommonJS对模块的定义十分简单:

    • 模块引用:在node中,通过var strName = require('string')函数来引入外部模块;

      • require()需要一个模块的标识,来表示要引入的模块;在require()函数在引入模块后,会返回一个对象作为返回值,这个对象就代表引入的模块本身
      • 对于文件模块(在项目中自己定义的模块):需要使用模块的绝对路径,或者以.或..开头(区别路径和名字)的相对路径来引入模块
        注意:node中的模块的代码,都是运行在独立的函数中,不是直接运行在全局作用域中;模块中的变量和函数对于外部都是不可见的
        在node中有一个对象 global,是node中的全局对象
      • 在全局中创建的变量都会作为global的属性保存
      • 在全局中创建的函数都会作为global的方法保存
    • 模块定义:一个js文件就是一个模块,

      • 可以将希望保留给外部的变量和函数,添加给 exports或module.exports对象 的属性和方法
    • 模块标识:模块的名字,通过标识区分不同的模块

      • 自定义的文件模块都是使用文件的路径作为标识
      • 其他模块都是使用模块的名字作为标识:fs express mongoose shal 等等

    证明js模块化代码在函数中运行

    全局中没有,只有函数中有的参数
    通过在模块中打印 arguments 证明模块运行在一个函数中
    arguments.callee 属性代表的是当前调用函数对象

    当模块中的代码执行时,node会自动在模块的前边添加如下代码:function (exports, require, module, __filename, __dirname) { } 这样模块中的所有代码就都被包含到一个函数中执行,所以函数中的变量和函数默认外部都是不可访问的

    在函数中,node定义并传递如下几个参数

    • exports
      • 导出的对象,通过它向外部暴露变量和函数
    • require
      • 函数,通过其引入外部的模块
    • module
      • 对象,代表当前的整个模块
      • exports === module.exports //true
    • __filename
      • 字符串 E:\Code\myNode\text.js
      • 当前模块所在的完整路径
    • __dirname
      • 字符串 E:\Code\myNode
      • 当前模块所在目录的完整路径

    exports&module.exports 的区别

    • exports变量是对module.exports属性的引用,我们在向exports中添加属性时,本质上是向module.exports中添加属性
    • module.exports 可以直接通过赋值的形式来暴露内容;
    • exports 不能直接赋值,只能通过 . 的形式赋值

    包 package

    将一组相关的模块组合在一起,形成一组完整的工具;本质是 一个文件夹
    commonJS包规范由包结构和包描述文件
    包结构:压缩文件

    • package.json 包描述文件 JSON文件 必需
    • bin 可执行二进制文件
    • lib js代码
    • doc 文档
    • test 单元测试

    NPM(Node Package Manager)

    包规范的其中一种实践
    借助NPM,Node与第三方模块之间形成很好一个生态系统

    NPM镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org
    用cnpm 代替 npm;

    NPM命令

    • npm -v :查看版本
    • npm :帮助说明
    • npm search packagefile

    NPM

    • 安装Node.js之后NPM就可以使用,和Node.js绑定安装
    • node包操作的第三方模块的发布、安装和依赖
    • 对node包搜索、下载、安装、删除、上传

    指令

    • npm -v 查看npm版本
    • npm search packagefile
      • 简写 npm s packagefile


        NPM
    • npm install packagefile
      • 下载时会在当前目录下查询 package.json
      • 简写 npm i packagefile
    • npm install packagefile --save
      • 安装指定包并添加到package.json的dependencies中
    • npm install packagefile -g
      • 全局安装(安装工具类)
    • npm init:初始化 配置package.json文件
      • name 文件名 不能有大写字母
      • version
      • description
      • entry point:初始入口
      • test command
      • git repository
      • keywords
      • author
      • license
    • npm install:安装项目中的所有依赖
      • 简写 npm i
    • npm remove packagefile:删除包
      • 简写 npm r packagefile
    • cnpm 是 npm 在国内对其的镜像文件库

    webstorm中使用npm

    1. Terminal:打开小窗口
    2. cd targetPath:进入指定路径
    3. npm i packagefile:安装需要的包
    4. 引入包文件,var pName = require('packageName')
    5. 调用方法
      node查询模块:当在node中引入一个外部模块时,需要通过模块的标识来引入模块,node会自动根据模块标识去搜索模块;首先node会去当前文件所在目录的node_modules文件夹去查询标识模块,如果有,则直接对其使用;如果没有,则去当前目录的上一级目录的node_modules查询,如果有则使用,如果没有则继续去上一级查询直到找到为止;如果根目录都没有找到,则报错。

    相关文章

      网友评论

          本文标题:NodeJs基础(node+nmp)

          本文链接:https://www.haomeiwen.com/subject/sjngpxtx.html