(Node.js笔记01)Hello&模块化&启动服务器返回页面

一.Hello Node.js

var a= 'Hello Node.js'
console.log(a)

在这里插入图片描述

1.Node.js是Javascript的运行平台,不是语言也不是框架,理解为可以运行在服务器上的Javascript
2.Node.js虽然利用Javascript,但它并没有BOM和DOM的解析操作(服务器没有浏览器,哪来的BOM/DOM操作)

二.模块

Node.js中许多的操作都是通过调用模块里定义好的函数进行的,体现了封装的思想,实际例子可以看第三部分的读取文件的操作。接下来我们来写部分代码更好地理解模块化的内部。

//A.js文件:想调用B文件内的add函数
var bExport=require('./b.js')
console.log(bExport.add(1,1))
console.log(bExport.foo2)
//B.js文件:提供函数或变量给A调用
var foo1='Hello'
exports.add=function(x,y){
	return x+y
}
exports.foo2='Node.js'

1.require()是调用的模块路径(A和B同个文件夹)
2.exports.是提供对外的接口,.后面可接变量名或函数名,如果没有提供对外的接口则无法对外进行输出,即foo1
3.require()内可简写成require(’./b’),其中的“./”不能省略

Node.js提供的模块链接

三.存取文件

1.读取文件
Node.js提供了非常多的模块提供我们使用,通常我们只需要对相应的模块进行获取,并使用模块里面的函数便可以得到我们想要的操作。

//require()里的fs是提供的模块,获取之后提供给变量fs
var fs = require('fs')
//参数一:读取的文件路径
//参数二:回调函数,读取成功时error为null,data默认为二进制流;失败时error为错误信息,data为null
fs.readFile('./1.txt', function (error, data) {
    if (error) {
        console.log("读取失败")
    } else {
        console.log(data.toString())   //data默认为二进制流,toString()方法转换为字符串
    }
})

在这里插入图片描述
2.存储文件

var fs = require('fs')
//参数一:存储路径
//参数二:存储内容
//参数三:回调函数
fs.writeFile('./1.txt', 'zhuangww05', function (error) {
    if (error) {
        console.log('存储失败')
    } else {
        console.log("写入成功")
    }
})

在这里插入图片描述

四.启动网络服务

var http = require('http')
var server = http.createServer()
//启动服务器并进行监听
//参数一:端口号,选择没有正在使用的端口号
//参数二:回调函数
server.listen(3000, function () {
    console.log("服务器启动成功了,可以通过http://127.0.0.1:3000/ 来进行访问了")
})
//参数一:获取向服务器发送请求
//参数二:回调函数,request是接受的请求,response是发送的消息
server.on('request', function (request, response) {
    console.log("收到客户端的请求了,请求路径是" + request.url)   //获取接受请求的url,指的是ip地址后面的地址,例如127.0.0.1/index.html,url="/index.html"
    var url = request.url
    if (url == '/') {
        response.end("index page")    //发送"index page"字符串给客户端,在浏览器页面进行显示
    } else if (url == '/production') {
        var message = [
            {
                name: "Apple",
                price: 8.0
            },
            {
                name: "Orange",
                price: 9.0
            }
        ]
        response.end(JSON.stringify(message)) //发送的信息只能是字符串或二进制流,所以需要对对象进行字符串的转换
    } else {
        response.end('404')
    }
})

在这里插入图片描述

response.end()是结束当前请求的回应并返回消息

五.服务器返回页面

var http = require('http')
var server = http.createServer()
var fs = require('fs')
server.listen(3000, function (error, data) {
    if (error) {
        console.log("服务器创建失败.")
    } else {
        console.log("服务器正在运行,可以通过http://127.0.0.1:3000/ 进行访问.")
    }
})
server.on('request', function (req, res) {
    var url = req.url
    if (url == '/') {
        res.end('Index Page')
    } else if (url == '/html') {
        fs.readFile('./1.txt', function (error, data) {
            if (error) {
            	//设置客户端浏览器读取服务器返回的信息
            	//text/plain代表字符串明文,用utf-8解析
                res.setHeader('Content-Type', 'text/plain;charset=utf-8')
                res.end("文件读取失败.")
            } else {
            	//text/html代表用解析html方式解析返回的消息
                res.setHeader('Content-Type', 'text/html;charset=utf-8')
                res.end(data)
            }
        })
    } else {
        res.end('404')
    }
})

在这里插入图片描述

发布了19 篇原创文章 · 获赞 4 · 访问量 499

猜你喜欢

转载自blog.csdn.net/zhuangww05/article/details/104911972