一.在了解node.js之前,先谈谈前端与后端的解

前端:做静态资源(官方解释:创建Web页面或app等前端界面呈现给用户的过程,通过HTMLCSSJavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互);

后端:操控资源(官方解释:网站上的一些注册登录和一些弹窗,这些都是后端的逻辑,常用的后端语言有php,jsp等,后端的数据库也包含myspl等,都是对后端进行存储数据。)

二.为什么学习node.js

node.js的特点:

(1).它是一个JavaScript运行环境

(2).依赖于Chrome V8引擎进行代码解释

(3).时间驱动

(4).非阻塞IO

(5).轻量;可伸缩,适于实时数据交互运动

(6).单进程,单线程

(7).没有兼容性的问题

(补充:1.什么是JavaScript:是一个脚本语言,嵌入在HTML中

    2.JavaScript可以做什么:操作dom;表单的效验

    3.JavaScript和浏览器的关系:浏览器解析JavaScript     =》机器码(依靠浏览器的内核)

···最后一点注意:node.js只是一门技术,并不是一种新的语言

三.操作node的方式与一些命令指令符

(1).window+r+(输入cmd):进入面板

(2).cls:面板中输入cls(清屏);

(3).cd+(空格)+(文件夹路径):进入指定文件夹内

(4).直接输入node;进入repl,进入交互运行环境

(5).连续按两下cril + c退出repl环境

(补充).node文件中没有window这个环境

四.node的方法

(1).断言——assert(断言即我们相信程序某个特定点布尔表达式为真)

 

const assert = require('assert');
assert(true, console.log('***打印出信息了'));

 

(2).测试——console

 

console.time("test")
consol.log("hello world")
console.timeEnd("test")
(用来测试输出hello world的时间)

 

 

(3).模块化(导入)

1——导入的两种方式:

espords.add=add(espords全局的对象)
let fs=require("fs")=>导入模块

2——Moudle.exports(曝光)

 

module.exports = {
    add : add
}

 

3——process(全局对象)

// process   全局的对象

console.log(process.version)
console.log(process.stdout)

 

 

(4).对文件或者文件夹的读写功能(使用文件系统,新引入文件系统的模块)

 

 let urlObj = url.parse(req.url,true)
   let query = urlObj.query;
   let pathname = urlObj.pathname;
   let query_uname = query.uname;

 读文件(readFile)

let urlObj = url.parse(req.url,true)
   let query = urlObj.query;
   let pathname = urlObj.pathname;
   let query_uname = query.uname;
fs.readFile("path",callback)=>异步的
fs.readFile(“path”)=>同步的
实例:
fs.readFile("01.html",(err,data)=>{
if(err){
throw err;
return;
}//如果有错误 ,hui抛出err
renponse.end(data);//如果没有错误,err为null,则输出data值
})

(5).fs.access()——判断文件或者文件夹是否存在,如果不存在,err值就有值,如果存在,err就没有值

s.access('./01.html',(err) => {
    // console.log(err);
    if(err){
        throw err;
    }
    fs.readFile('./01.html','utf8',(err,data) => {
        console.log(data);
    })
})

 

(6).什么是IO(输入和输出)=>数据的传输

1——异步的IO处理=>node属于单线程(用异步代替了多线程)

并发:一段时间内有几个程序处于启动运行到运行完毕之间

补充:(

进程:代码执行的一个环境;

线程:单线程=>node属于单线程(用异步取代了多线程);

多线程:调度很难)

2——异步的IO操作和异步的非IO操作;

异步的IO操作:

(1):文件系统

(2):网络操作

异步的非IO操作:

(1):settimeout

(2):setinterval

 

(7).模块fs下的六大方法

1——写文件

异步

 

异步的写法
// fs.writeFile(path,content,'utf8',(err)=>{
       if(err){
       throw err;
       return;
       } 
// })

 

同步

// var err = fs.writeFileSync('./04.json',"lasdjsdfsdfsdfsdfdsfsdfflksjdflksjdlkjsdlfjkds","utf8");
// console.log(err)

 

 2——追加内容

 

// fs.appendFile('./05.json',"这个是追加的内容",'utf8',(err) => {
//     console.log(err)
// })

 

 

 

 3——创建文件夹

// fs.mkdir('./abc',(err) => {

// })

4——列出所有文件或者文件并以数组的形式展开

// fs.readdir('./',(err,files) => {
//     console.log(files)
// })

5——判断问价或者文件夹是否存在

fs.stat('./04.json',(err,stats) => {
    if(stats.isDirectory()){
        console.log('是文件夹')
    }else{
        console.log('不是文件夹')
    }
})

(8).内置模块(path)

path.basename =>获取当前文件的文件名。

console.log(path.basename("C:\\Users\\Administrator\\Desktop\\node\\02\\indasdfsdfex.html\\index.html"));

 

path.dirname=>获取文件名详细路径

console.log(path.dirname("C:\\Users\\Administrator\\Desktop\\node\\02\\abc\\index.html"))

 

path.extname=>获取文件响应的后缀名(不同的文件请求头不一样)

console.log(path.extname('C:\\Users\\Administrator\\Desktop\\node\\02\\indasdfsdfex.html\\index.html.css.png'))

 

path.join(‘/a’,'/b','/c')=路径拼接

console.log(path.join('/a',"/b","/c"))

 

 (9)网络编程(网络,上网,新闻,游戏)=>数据的交互

bs => browser    server (浏览器,服务器)

cs=> client server (客户端  服务器);

(两台计算机可以发生网络数据交互,完成通信)

(服务器=>一个性能比较好的电脑)

服务器:web服务器的一种应用服务器;提供web,对web应用程序提供运行环境(Apache;tomcat;iis;nigx)=>(把前台和后台所有代码放在指定位置,然后进行运行,node不需要服务器)     

 1——监听request事件的时候,都会触发request事件(触发完成就回去执行一个callback)

server.on('request',function(request,response){
    response.writeHead(200,{'content-type':"text/html;charset=utf8"});
    response.write('<h1>你好</h1>');
    response.end('world')

    console.log(request.httpVersion);
    console.log(request.method)
    console.log(request.url)
})

server.listen(3000)