Nodejs学习笔记
一、 NodeJs介绍
- 什么是NodeJS,在应用程开发中起什么作用?
Nodejs是一个应用编程平台,能运行javascript语言编写的代码,提供了javascript运行环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
提供了大量应用编程接口API,在处理http网络、数据库、文件等操作时非常方便.[图片上传失败...(image-ef1d0e-1534834411521)]
- NodeJS开发环境安装
1> 官网下载地址 https://nodejs.org/en/download/
2> 检测是否安装成功
打开命令窗口:输入 node –v
>v8.11.3
出现如上提示表示安装成功
3> 环境配置
第一步:在nodejs安装目录下新建: ”node_global”及”node_cache”两个文件夹
[图片上传失败...(image-a24a5e-1534834411520)]
第二步: cmd 中输入如下命令
$ npm config set prefix “d:\nodejs\node_global”
$ npm config set cache “d:\nodejs\node_cache”
第三步:配置新建NODE_PATH环境变量
变量名:NODE_PATH
变量值:D:\nodejs\node_global\node_modules
- 第一个javascript程序
运行方式1:
命令行直接输入 node ,进入命令模式
输入相应javascript代码执行
退出:按两下ctrl+c
运行方式2:
将javascript代码封装成xx.js文件
命令行输入: node xx.js
二、 nodejs包管理工具 NPM
什么是npm?
检查npm是否安装 $ npm –v
设置npm服务器为淘宝镜像服务器
$ npm config set registry https://registry.npm.taobao.org
- npm包安装方式: 全局安装 和本地安装
npm install 包名
例:安装MySQL数据库包 npm install mysql -g
- cnpm 使用淘宝 NPM 镜像
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
$ cnpm install mysql –g
三、 nodejs数据库操作
- 实现连接mysql数据库查询数据
新建connectdb.js
|
var mysql = require('mysql'); //引用mysql数据库操作包
//根据指定参数创建数据库连接对象
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123',
database : 'db1803'
});
connection.connect(); //打开数据库连接
var findUserByNameSQL = "SELECT * FROM user WHERE username='admin'";
//执行sql语句
connection.query(findUserByNameSQL, function(error,results,fileds){
if (error) {
console.log("查询数据出错...");
throw error; //抛异常给系统处理
};
console.log("用户名"+ "\t"+"密码");
console.log(results[0].username+ "\t"+results[0].password);
});
connection.end(); //关闭数据库连接
|
执行js文件命令
$ node connectdb.js
输出结果:
用户名 密码
admin 123456
四、 nodejs模块系统
- 什么是模块?
为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。
模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。
- Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开接口对象(用于定义公开模块接口),require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。
[图片上传失败...(image-d88f74-1534834411518)]
Hello.js文件内容如下:
[图片上传失败...(image-167c9c-1534834411518)]
Main.js
[图片上传失败...(image-95c6c5-1534834411518)]
有时候我们只是想把一个对象封装到模块中,格式如下:
module.exports = function() {
// ...
}
模块接口的唯一变化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用该模块时,其接口对象就是要输出的 Hello 对象本身,而不是原先的 exports。
五、 在JavaScript中,一个函数可以作为另一个函数的参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。
六、 异步与同步
- 读取文件操作
|
var fs = require('fs');
fs.readFile("users.txt",function(error,data){
if(error){
console.log("读文件出错");
return;
}
console.log(data.toString());
});