Nodejs學(xué)習(xí)筆記
一靶草、 NodeJs介紹
- 什么是NodeJS莺禁,在應(yīng)用程開(kāi)發(fā)中起什么作用?
Nodejs是一個(gè)應(yīng)用編程平臺(tái)吼具,能運(yùn)行javascript語(yǔ)言編寫(xiě)的代碼,提供了javascript運(yùn)行環(huán)境矩距,基于Google的V8引擎拗盒,V8引擎執(zhí)行Javascript的速度非常快锥债,性能非常好陡蝇。
提供了大量應(yīng)用編程接口API,在處理http網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)赞弥、文件等操作時(shí)非常方便.[圖片上傳失敗...(image-ef1d0e-1534834411521)]
- NodeJS開(kāi)發(fā)環(huán)境安裝
1> 官網(wǎng)下載地址 https://nodejs.org/en/download/
2> 檢測(cè)是否安裝成功
打開(kāi)命令窗口:輸入 node –v
>v8.11.3
出現(xiàn)如上提示表示安裝成功
3> 環(huán)境配置
第一步:在nodejs安裝目錄下新建: ”node_global”及”node_cache”兩個(gè)文件夾
[圖片上傳失敗...(image-a24a5e-1534834411520)]
第二步: cmd 中輸入如下命令
$ npm config set prefix “d:\nodejs\node_global”
$ npm config set cache “d:\nodejs\node_cache”
第三步:配置新建NODE_PATH環(huán)境變量
變量名:NODE_PATH
變量值:D:\nodejs\node_global\node_modules
- 第一個(gè)javascript程序
運(yùn)行方式1:
命令行直接輸入 node ,進(jìn)入命令模式
輸入相應(yīng)javascript代碼執(zhí)行
退出:按兩下ctrl+c
運(yùn)行方式2:
將javascript代碼封裝成xx.js文件
命令行輸入: node xx.js
二毅整、 nodejs包管理工具 NPM
什么是npm?
檢查npm是否安裝 $ npm –v
設(shè)置npm服務(wù)器為淘寶鏡像服務(wù)器
$ npm config set registry https://registry.npm.taobao.org
- npm包安裝方式: 全局安裝 和本地安裝
npm install 包名
例:安裝MySQL數(shù)據(jù)庫(kù)包 npm install mysql -g
- cnpm 使用淘寶 NPM 鏡像
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
$ cnpm install mysql –g
三、 nodejs數(shù)據(jù)庫(kù)操作
- 實(shí)現(xiàn)連接mysql數(shù)據(jù)庫(kù)查詢數(shù)據(jù)
新建connectdb.js
|
var mysql = require('mysql'); //引用mysql數(shù)據(jù)庫(kù)操作包
//根據(jù)指定參數(shù)創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123',
database : 'db1803'
});
connection.connect(); //打開(kāi)數(shù)據(jù)庫(kù)連接
var findUserByNameSQL = "SELECT * FROM user WHERE username='admin'";
//執(zhí)行sql語(yǔ)句
connection.query(findUserByNameSQL, function(error,results,fileds){
if (error) {
console.log("查詢數(shù)據(jù)出錯(cuò)...");
throw error; //拋異常給系統(tǒng)處理
};
console.log("用戶名"+ "\t"+"密碼");
console.log(results[0].username+ "\t"+results[0].password);
});
connection.end(); //關(guān)閉數(shù)據(jù)庫(kù)連接
|
執(zhí)行js文件命令
$ node connectdb.js
輸出結(jié)果:
用戶名 密碼
admin 123456
四绽左、 nodejs模塊系統(tǒng)
- 什么是模塊?
為了讓Node.js的文件可以相互調(diào)用悼嫉,Node.js提供了一個(gè)簡(jiǎn)單的模塊系統(tǒng)。
模塊是Node.js 應(yīng)用程序的基本組成部分拼窥,文件和模塊是一一對(duì)應(yīng)的戏蔑。換言之,一個(gè) Node.js 文件就是一個(gè)模塊鲁纠,這個(gè)文件可能是JavaScript 代碼总棵、JSON 或者編譯過(guò)的C/C++ 擴(kuò)展。
- Node.js 提供了 exports 和 require 兩個(gè)對(duì)象改含,其中 exports 是模塊公開(kāi)接口對(duì)象(用于定義公開(kāi)模塊接口)情龄,require 用于從外部獲取一個(gè)模塊的接口,即所獲取模塊的 exports 對(duì)象。
[圖片上傳失敗...(image-d88f74-1534834411518)]
Hello.js文件內(nèi)容如下:
[圖片上傳失敗...(image-167c9c-1534834411518)]
Main.js
[圖片上傳失敗...(image-95c6c5-1534834411518)]
有時(shí)候我們只是想把一個(gè)對(duì)象封裝到模塊中骤视,格式如下:
module.exports = function() {
// ...
}
模塊接口的唯一變化是使用 module.exports = Hello 代替了exports.world = function(){}鞍爱。 在外部引用該模塊時(shí),其接口對(duì)象就是要輸出的 Hello 對(duì)象本身专酗,而不是原先的 exports睹逃。
五、 在JavaScript中祷肯,一個(gè)函數(shù)可以作為另一個(gè)函數(shù)的參數(shù)沉填。我們可以先定義一個(gè)函數(shù),然后傳遞佑笋,也可以在傳遞參數(shù)的地方直接定義函數(shù)翼闹。
六、 異步與同步
- 讀取文件操作
|
var fs = require('fs');
fs.readFile("users.txt",function(error,data){
if(error){
console.log("讀文件出錯(cuò)");
return;
}
console.log(data.toString());
});