NodeJs基础(node+nmp)

NodeJs基础(node+nmp)

转自:https://www.jianshu.com/p/f07c80d6a809

 Is_JackieZhang 关注

2017.11.01 19:21* 字数 2592 阅读 456评论 1喜欢 3

NodeJs

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

webstorm与svn关联:

配置svn

file-->settings-->version Control--> Subversion-->Use command line client 取消勾选

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

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

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

安装命令行工具 slik Subversion

关联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

Terminal:打开小窗口

cd targetPath:进入指定路径

npm i packagefile:安装需要的包

引入包文件,var pName = require('packageName')

调用方法

node查询模块:当在node中引入一个外部模块时,需要通过模块的标识来引入模块,node会自动根据模块标识去搜索模块;首先node会去当前文件所在目录的node_modules文件夹去查询标识模块,如果有,则直接对其使用;如果没有,则去当前目录的上一级目录的node_modules查询,如果有则使用,如果没有则继续去上一级查询直到找到为止;如果根目录都没有找到,则报错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345