Node.js代码总结

Node.js是一个服务器端的Javascript解析器。

在node中,不同的功能组件被划分成不同的模块。


命令

全局模块的默认安装位置

npm root -g

查看全局模块的默认搜索路径

$node 

>global.module.paths



事件

Nodejs采用事件驱动的方式,所有能够产生事件的对象都是事件模块中的EventEmitter类的实例。

        var events = require("events"); 
  var emitter = new events.EventEmitter(); 
  emitter.on("myEvent", function(msg) { 
    console.log(msg); 
  }); 
  emitter.emit("myEvent", "Hello World.");
new events.EventEmitter()  创建了一个事件触发器
addListener(event, listener) 和 on(event, listener) 这两个方法都是将一个监听器添加到指定事件的监听器数组的末尾。
once(event, listener) 这个方法为事件为添加一次性的监听器。该监听器在事件第一次触发时执行,过后将被移除。

removeListener(event, listener) 该方法用来将监听器从指定事件的监听器数组中移除出去。

emit(event, [arg1], [arg2], [...]) 方法用来产生事件。以提供的参数作为监听器函数的参数,顺序执行监听器列表中的每个监听器函数。

所有数据流都是EventEmitter的实例,因此可以产生各种不同的事件。

可读流主要会产生以下事件:

  • data   当读取到流中的数据时,此事件被触发
  • end   当流中没有数据可读时,此事件被触发
  • error   当读取数据出现错误时,此事件被触发
  • close   当流被关闭时,,此事件被触发,可是并不是所有流都会触发这个事件。(例如,一个连接进入的HTTP request流就不会触发'close'事件。)


文件系统

Node 中的 fs 模块用来对本地文件系统进行操作。使用require('fs')访问这个模块。所有的方法都提供了异步和同步两种方式。异步操作的版本都会使用一个回调方法作为最后一个参数。当操作完成的时候,该回调方法会被调用。而回调方法的第一个参数总是保留为操作时可能出现的异常。如果操作正确成功,则第一个参数的值是 null 或 undefined 。
同步操作的版本的方法名称则是在对应的异步方法之后加上一个 Sync 作为后缀。当使用异步版本时不能保证执行顺序。在繁重的任务中,使用这些函数的异步版本.同步版本会阻塞进程,直到完成处理,也就是说会暂停所有的连接.

删除文件
var fs = require('fs');
fs.unlink('./myModule.js', function (err) {
 
   
  if (err) throw err;
});

网络

 var http = require('http');
  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
  }).listen(1337, "127.0.0.1");
http.createServer 创建并返回一个新的web server对象,并且给服务绑定一个回调,用以处理请求。通过 http.listen() 方法就可以让该 HTTP 服务器在特定端口监听。

连接Mysql数据库

var mysql = require(‘mysql‘);
var connect = mysql.createConnection({
    host:‘localhost‘,
    user:‘root‘,
    password:‘1993‘,
    database:‘test‘,
    port:3306
});
connect.connect();
connection.query(selectSQL, function(err, rows, fields) {
  if (err) throw err;
  console.log("SELECT ==> ");
  for (var i in rows) {
      console.log(rows[i]);
  }
  
});
connect.end(); //end()方法在queries都结束后执行。end()方法可以接受一个回调函数,query执行出错后,错误返回给回调函数的err参数。
connect.destory(); //不接受回调函数, 立即结束

问题 Error:Cannot find module 'mysql'
1.设置全局模块根目录NODE_PATH=“E:\nodejs\node_modules”。
2.若没有设置全局模块根目录,那么执行js的目录必须有依赖的modules。
(1)直接在执行js的目录下npm install xxx。
(2)在执行js的目录下,创建package.json文件,把需要的modules加进去,然后执行npm install。
Connection Options
charset  字符集,默认为UTF8_GENERAL_CI
connectTimeout  连接超时,单位毫秒,默认不限制
multipleStatements  是否许一个query中有多个MySQL语句 ,默认为false
数据库基本操作
var  userAddSql = 'INSERT INTO userinfo(Id,UserName,UserPass) VALUES(0,?,?)';
var  userAddSql_Params = ['Wilson''abcd'];
connection.query(userAddSql,userAddSql_Params,function (err, result){});
result中包含affectedRows(受影响的行数)、insertId(插入的主键ID)。根据这些信息可以方便进行后续操作。
删改
v var userModSql = 'UPDATE userinfo SET UserName = ?,UserPass = ? WHERE Id = ?';
  var userModSql_Params = ['钟慰''5678',1];
  connection.query(userModSql,userModSql_Params,function (err, result) {});
  var  userGetSql = 'SELECT * FROM userinfo';
 connection.query(userGetSql,function (err, result) {});
 var  userDelSql = 'DELETE FROM userinfo';
 connection.query(userDelSql,function (err, result) {});

常用模块和方法

加载模块
var  module = require('modulename');
var  module = require('./modulename.js');  用来加载与当前js文件同一目录下的js模块。

模块中的私有属性和方法在模块以外无法访问。公共属性和公共方法的声明需要在前面加上this关键字。




你可能感兴趣的:(程序语言)