nodejs概论
我将在此写下自己读《Node.js开发指南》一书的笔记,以便于以后的学习。
一、什么是node.js
Node.js 是一个让 JavaScript 运行在浏览器之外的平台。
Node.js 不是一种独立的语言,与 PHP、Python、Perl、Ruby 的“既是语言也是平台” 不同。Node.js 也不是一个 JavaScript 框架,不同于 CakePHP、Django、Rails。Node.js 更不 是浏览器端的库,不能与 jQuery、ExtJS 相提并论。Node.js 是一个让 JavaScript 运行在服务 端的开发平台,它让 JavaScript 成为脚本语言世界的一等公民,在服务端堪与 PHP、Python、 Perl、Ruby 平起平坐。
二、Node.js 能做什么
正如 JavaScript 为客户端而生,Node.js 为网络而生。
Node.js 能做的远不止开发一个网 站那么简单,使用 Node.js,你可以轻松地开发:
具有复杂逻辑的网站;
基于社交网络的大规模 Web 应用;
Web Socket 服务器;
TCP/UDP 套接字应用程序;
命令行工具; 交互式终端程序;
带有图形用户界面的本地应用程序;
单元测试工具;
客户端 JavaScript 编译器。
三、npm
NPM是随同NodeJS一起安装的包管理工具,类似于Java的包管理。
但是在nodejs中,一般将这样的包称为模块。
需要使用到什么模块,就在控制台(cmd)上输入
- npm install <Module Name> 如果在后面添加 -g 代表全局安装 不输入为本地安装<Module Name> 为模块的名称
- 安装如果出现如下错误:npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 解决方法为 npm config set proxy null
- 安装成功会输出类似如下的提示内容(此为安装express的输出内容)
- express@4.13.3 node_modules/express
- ├── escape-html@1.0.2
- ├── range-parser@1.0.2
- ├── merge-descriptors@1.0.0
- ├── array-flatten@1.1.1
- ├── cookie@0.1.3
- ├── utils-merge@1.0.0
- ├── parseurl@1.3.0
- ├── cookie-signature@1.0.6
- ├── methods@1.1.1
- ├── fresh@0.3.0
- ├── vary@1.0.1
- ├── path-to-regexp@0.1.7
- ├── content-type@1.0.1
- ├── etag@1.7.0
- ├── serve-static@1.10.0
- ├── content-disposition@0.5.0
- ├── depd@1.0.1
- ├── qs@4.0.0
- ├── finalhandler@0.4.0 (unpipe@1.0.0)
- ├── on-finished@2.3.0 (ee-first@1.1.1)
- ├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)
- ├── debug@2.2.0 (ms@0.7.1)
- ├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6)
- ├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6)
- └── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)
- 卸载模块npm uninstall<Module Name>
- 更新模块npm update<Module Name>
- 搜索模块 npm search<Module Name>
创建模块相对复杂,对于新手来说先不做了解。
- 四、REPL(交互式解析器)
- Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。
说白了就是一个可以在cmd里面执行JS的解析器,这一点和Java大同小异
Node 自带了交互式解释器,可以执行以下任务:
读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
执行 - 执行输入的数据结构
打印 - 输出结果
循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。
Node 的交互式解释器可以很好的调试 Javascript 代码。
如何使用node.ls的REPL终端呢?
在cmd中输入node即可打开 出现>符号表示打开成功,也可以使用nodejs自带的node.exe应用程序。双击直接运行。
五、回调函数
什么是回调函数?
function f1(callback){
setTimeout(function () {
// f1的任务代码
callback();
}, 1000);
}
function F2(){ }
执行F1函数成了f1(f2)
nodejs概论的更多相关文章
- nodejs概论(实操篇)
什么是模块? 模块分为原生模块(node.jsAPI提供的原生模块,在启动时已经被加载)和 文件模块(动态加载模块,主要由原生模块module来实现和完成.通过调 用node.js的require方法 ...
- nodejs原生模块简介
一.Express框架 前面的章节已经介绍过了,可以使用npm来安装node.js模块.具体操作请参照以前写的nodejs概论. Express是一个nodejs的web开源框架,用于快速的搭建web ...
- NodeJS爬虫系统初探
NodeJS爬虫系统 NodeJS爬虫系统 0. 概论 爬虫是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上是针对爬虫而做出的优化. robots.txt是一个文本文 ...
- ApacheCN NodeJS 译文集 20211204 更新
Node API 开发入门指南 零.前言 一.Node.js 简介 二.构建 API--第 1 部分 三.构建 API--第 2 部分 React TypeScript Node 全栈开发 零.序言 ...
- NodeJs之OS
OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...
- NodeJs之Path
Path模块 NodeJs提供的Path模块,使得我们可以对文件路径进行简单的操作. API var path = require('path'); var path_str = '\\Users\\ ...
- NodeJs之调试
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
- NodeJs之child_process
一.child_process child_process是NodeJs的重要模块.帮助我们创建多进程任务,更好的利用了计算机的多核性能. 当然也支持线程间的通信. 二.child_process的几 ...
随机推荐
- Python下划线的使用 _ __ __obj__
Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避 ...
- javaWeb遍历获取session中的值
//方法一:通过遍历的方法进行遍历 String FileName=""; HttpSession session=request.getSession();//获取session ...
- SAR-303 xml validator验证框架
// 配置文件详解 <mvc:annotation-driven validator="validator" /> <bean id="validato ...
- 将Map转换为Java 对象
public class MapUtil { public static Object convert2Object(Class clazz,Map<String,Object[]> ma ...
- moveToThread的最简单用法(依葫芦画瓢即可)(使得线程也更偏向于信号槽的使用方法)
/*! * \file main.cpp * * Copyright (C) 2010, dbzhang800 * All rights reserved. * */ #include <QtC ...
- BZOJ 1007 [HNOI2008]水平可见直线
1007: [HNOI2008]水平可见直线 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4453 Solved: 1636[Submit][Sta ...
- Hadoop FileInputFormat实现原理及源码分析
FileInputFormat(org.apache.hadoop.mapreduce.lib.input.FileInputFormat)是专门针对文件类型的数据源而设计的,也是一个抽象类,它提供两 ...
- Bloom Filter(布隆过滤器)
布隆过滤器用于测试某一元素是否存在于给定的集合中,是一种空间利用率很高的随机数据结构(probabilistic data structure),存在一定的误识别率(false positive),即 ...
- MFC对话框应用程序添加自定义消息
1. 定义自定义消息 /** * \brief 消息测试 */ #define E6100_MSG_TEST ( WM_USER + 1001 ) 2. 声明自定义消息处理函数 /* ...
- ZOJ(ZJU) 1002 Fire Net(深搜)
Suppose that we have a square city with straight streets. A map of a city is a square board with n r ...