分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

node.js

发布时间:2023-09-06 02:34责任编辑:傅花花关键词:js

1.node是什么?

  Node 是一个让 JavaScript 运行在服务端的开发平台, 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。 Node用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

  1) 什么是 V8?

  V8 JavaScript 引擎是 Google 用于其 Chrome 浏览器的底层 JavaScript 引擎。实际上,JavaScript 引擎负责解释并执行代码。Google 使用 V8 创建了一个用 C++ 编写的超快解释器,该解释器拥有另一个独特特征;您可以下载该引擎并将其嵌入任何应用程序。V8 JavaScript 引擎并不仅限于在一个浏览器中运行。因此,Node 实际上会使用 Google 编写的 V8 JavaScript 引擎,并将其重建为可在服务器上使用。

  2) 什么是i/o?
  i/o ( input,output)  就是服务器的一个读写操作比方说声音输入,听歌,网上传递的字符串

  3) 什么是并发?
  一段时间内有多个程序在运行到运行完毕之间

  4) 什么是进程?
  一个软件运行过程中至少要有一个进程对应

  5) 什么是线程?

  线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
  多线程与单线程的效率问题:线程本身由于创建和切换的开销,采用多线程不会提高程序的执行速度,反而会降低速度,但是对于频繁IO操作的程序,多线程可以有效的并发.

  6) 同步和异步有什么区别?  

  同步会阻塞: 循环 script加载src
?  异步不会阻塞代码:   定时器,link加载css,img加载src.

  7) 什么是异步的IO.  

  要有数据的交互 异步的IO 读文件
  没有数据的交互 ????异步的非IO ??setTimeout setInterval

2.node的解析:
   对象分为两类:
    1) 宿主对象:比如 window history
    2) 内置对象:比如math date regexp array string 
  因为是直接用v8引擎去解析,宿主对象不能解析,没有window对象,此时在node.js中用global表示全局变量,等同于var a.
 
3.常用方法:
  1) 断言
var flag = 123; ???//假定条件// 此处省略一万行// 不能确定flag的值是否还为123,断言判断console.assert(flag == 1234,‘flag的值根本不等于123‘);
  2) 计算时间
console.time(‘test‘);for(var i = 0;i < 100000000;i++){}console.timeEnd(‘test‘);

  3) 路径

console.log(__dirname); ??//当前文件所在的路径console.log(__filename); ??//当前文件的全部路径

4.node.js中的内置模块

  在node中,有一些内置的模块(包),通过require函数引入 

  内置模块:

  1. fs 文件系统
  2. http 创建服务
  3. path 路径
  4. querystring 参数模块
  5. url 地址栏
  6. 自定义模块
  fs 文件系统的模块:
  1)
读取文件
// fs 文件系统的模块var fs = require("fs"); ?// console.log(fs);// 异步读取文件fs.readFile(‘./08.txt‘,‘utf8‘,function(err,data){ ??//如果编码格式不写,输出的就是一串buffer码 ???// console.log(err); ??//这是错误,但是没有抛出 ???if(err){ ???????throw err; ??//把错误抛出来,有错误可以阻止代码继续往后面走 ???} ???console.log(data)})// 同步// var data = fs.readFileSync("./08.txt",‘utf8‘) ??//同步读完就是函数的返回值// console.log(data);

  2)判断文件是否存在

 //判断文件是否存在
fs.access(‘./08.txt‘,function(err){ ?????if(err){ ???????throw err; ???} ???// 如果没有抛出错误,文件存在 ???fs.readFile(‘./08.txt‘,‘utf8‘,function(err,data){ ???????if(err) throw err; ???????console.log(data); ???})})fs.access("./abc",function(err){ ???//可以判断文件夹 ???if(err){ ???????throw err; ???} ???console.log(‘hello‘)})

   

  3)写文件

异步写文件var obj = { ???"uname" : "admin", ???"upassword" : "admin" }var arr = [];// su shu arr.push(obj);var obj2 = { ???"uname" : "admin2", ???"upassword" : "admin2" }arr.push(obj2)var str = JSON.stringify(arr);fs.writeFile(‘./data/03.json‘,str,‘utf8‘,function(err){ ??//如果写入成功,这个err为null ???// console.log(err); ???if(err){ ???????throw err; ???//如果错误,将错误抛出 ???} ???console.log(‘文件写入成功‘) ???// 如果文件不存在,会帮你去创建对应的文件,但是不会创建文件夹})

同步写文件fs.writeFileSync(file, data[, options])

  4)追加文件

异步的追加文件fs.appendFile(path, data[, options], callback)fs.appendFile("./data/04.json","hello world","utf8",function(err){ ???console.log(err); ???console.log(‘OK‘)})同步的追加文件fs.appendFileSync(path, data[, options])

  5)创建文件夹

异步的创建文件夹fs.mkdir("./data02",function(err){ ???console.log(err); ??//node会报错,但是错误都不会抛出,不会影响后续代码的执行 ???console.log(‘OK‘);})同步的创建文件夹fs.mkdirSync(path[, options])

  7)读文件夹

异步读文件夹fs.readdir(path[, options], callback)fs.readdir("./data",function(err,data){ ???console.log(err); ???console.log(data); ??//里面的文件以数组的形式表示出来,进行判断,判断是否是文件夹 ???// 如果是文件夹,继续读文件夹,如果是文件,直接读文件,然后展示})同步的读文件夹fs.readdirSync(path[, options])

  8)文件夹是否存在

异步判断文件或者文件夹是否存在fs.access(path[, mode], callback) ??能否判断文件夹是否存在fs.access("./data",function(err){ ??//这个方法是可以判断文件和文件夹是否存在 ???console.log(err); ???console.log(‘OK‘);})同步判断文件或者文件夹是否存在fs.accessSync(path[, mode])

  9)

fs.stat("./data",function(err,stats){ ???console.log(err); ???// console.log(stats.isDirectory());
  //    获取文件的大小;
 if(stats.isDirectory()){
  console.log(‘是文件夹‘)
 }
else{
  console.log(‘是文件‘)
 }
    console.log(stats.size);
//    获取文件最后一次访问的时间;
    console.log(stats.atime.toLocaleString());
//    文件创建的时间;
    console.log(stats.birthtime.toLocaleString());
//    文件最后一次修改时间;
    console.log(stats.mtime.toLocaleString());
//    状态发生变化的时间;
    console.log(stats.ctime.toLocaleString())
//判断是否是目录;是返回true;不是返回false;
    console.log(stats.isFile())

    console.log(stats.isDirectory())}) 

})

  http的模块:

// 引入http的模块var http = require("http");// 创建一个服务var count = 0;http.createServer(function(request,response){ ???count ++; ???console.log(‘hello world‘); ???response.end(count.toString())}).listen(3000)
 
 
 
 
 
 
 
 
 
 

node.js

原文地址:https://www.cnblogs.com/1234wu/p/10472905.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved