javaScript可以做后端开发,但是要借助运行环境,node.js
Node.js (nodejs.org)
查看安装成功
node -v
用来操作文件的模块
const fs = require('fs')
fs.readFile()
// 1.导入fs 模块,来操作文件
const fs = require('fs');
// 2.调用 fs.readFile() 方法读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件的时候采用的编码格式,一般默认指定utf8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./file/1.txt','utf8',function (err,dataStr){
// 2.1打印失败的结果
console.log(err)
console.log('--------------')
// 2.2打印成功的结果
console.log(dataStr)
})
// 1.导入fs 模块,来操作文件
const fs = require('fs');
// 2.调用 fs.readFile() 方法读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件的时候采用的编码格式,一般默认指定utf8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./file/1.txt','utf8',function (err,result){
if(err){
return console.log('文件读取失败' + err.message)
}
console.log('文件读取成功,内容是:' + result)
})
fs.writeFile(file,data[,options],callback)
//1.导入 fs 文件系统模块
const fs = require('fs')
// 2.调用 fs.writeFile()方法,写入文件的内容
// 参数1:表示文件的存放路径
// 参数2:表示要写入的内容
// 参数3:回调函数
fs.writeFile('./file/2.txt','adbc',function (err){
// 2.1 如果文件写入成功,则 err的值等于 null
// 2.2 如果文件写入失败,则 err的值等于一个错误对象
console.log(err)
})
//1.导入 fs 文件系统模块
const fs = require('fs')
// 2.调用 fs.writeFile()方法,写入文件的内容
// 参数1:表示文件的存放路径
// 参数2:表示要写入的内容
// 参数3:回调函数
fs.writeFile('./file/2.txt','adbc',function (err){
// 2.1 如果文件写入成功,则 err的值等于 null
// 2.2 如果文件写入失败,则 err的值等于一个错误对象
// console.log(err)
if(err){
return console.log('文件写入失败!' + err.message)
}
console.log('文件写入成功!')
})
const fs = require('fs')
fs.readFile('./file/成绩.txt','utf8',function (err,dataStr){
// 判断读取成功
if(err){
return console.log('读取失败!' + err.message)
}
// console.log('读取文件成功:' + dataStr)
// 先把成绩的数据,按照空格进行分割
const arrOld = dataStr.split(' ')
// 循环分割后的数组,对每一项数据,进行字符串的替换操作
const arrNew = []
arrOld.forEach(item => {
arrNew.push(item.replace('=',': '))
})
// 把新数组中的每一项,进行合并,得到一个新的字符串
const newStr = arrNew.join('\n')
console.log(newStr)
})
const fs = require('fs')
// 出现路径拼接错误的问题,是因为提供了 ./或 ../ 开头的相对路径
// 如果要解决这个问题,可以直接提供一个完整的文件存放路径就行
// fs.readFile('./file/1.txt','utf8',function (err,dataStr){
// if(err){
// return console.log('读取失败' + err.message)
// }
// console.log('读取文件成功' + dataStr)
// })
// ****************************************************************************************
// 移植性非常差,不利于维护
// fs.readFile('E:\\gitCode\\Node_JS_Study\\file\\1.txt','utf8',function (err,dataStr){
// if(err){
// return console.log('读取失败' + err.message)
// }
// console.log('读取文件成功' + dataStr)
// })
// ****************************************************************************************
//__dirname 表示当前文件所处的目录
console.log(__dirname) // E:\gitCode\Node_JS_Study
fs.readFile(__dirname + '/file/1.txt','utf8',function (err,dataStr){
if(err){
return console.log('读取失败' + err.message)
}
console.log('读取文件成功' + dataStr)
})
const path = require('path)
const path = require('path')
const dir = '/usr/local';
const file = 'index.html';
const fullPath = path.join(dir, file);
console.log(fullPath) //\usr\local\index.html
//注意 ../ 会抵消前面的路径
const pathStr = path.join('/a','/b/c','../','./d','e')
console.log(pathStr) // \a\b\d\e
//path.join会在不同操作系统中自动替换分隔符,比如windows替换为‘\’,linux替换为'/'
//获取扩展名的文件名
const path = require('path')
const fpath = '/a/b/c/index.html'
// const fullName = path.basename(fpath)
// console.log(fullName)
const nameWithoutExt = path.basename(fpath,'.html')
console.log(nameWithoutExt) // index
// 获得扩展名部分
const path = require('path')
const fpath = '/a/b/c/index.html'
const fext = path.extname(fpath)
console.log(fext) // .html
可以将html文件拆分为html、js、css文件
// 1.1 导入 fs 模块
const fs = require('fs')
// 1.2 导入 path 模块
const path = require('path')
// 1.3 定义正则表达式,分别匹配 和 标签
const regStyle = /', '')
// // 3.4 调用 fs.writeFile() 方法,将提取的样式,写入到 clock 目录中 index.css 的文件里面
fs.writeFile(path.join(__dirname, './clock/index.css'), newCSS, function(err) {
if (err) return console.log('写入 CSS 样式失败!' + err.message)
console.log('写入样式文件成功!')
})
}
// 4.1 定义处理 js 脚本的方法
function resolveJS(htmlStr) {
// 4.2 通过正则,提取对应的 标签内容
const r2 = regScript.exec(htmlStr)
// 4.3 将提取出来的内容,做进一步的处理
const newJS = r2[0].replace('', '')
// 4.4 将处理的结果,写入到 clock 目录中的 index.js 文件里面
fs.writeFile(path.join(__dirname, './clock/index.js'), newJS, function(err) {
if (err) return console.log('写入 JavaScript 脚本失败!' + err.message)
console.log('写入 JS 脚本成功!')
})
}
// 5.1 定义处理 HTML 结构的方法
function resolveHTML(htmlStr) {
// 5.2 将字符串调用 replace 方法,把内嵌的 style 和 script 标签,替换为外联的 link 和 script 标签
const newHTML = htmlStr.replace(regStyle, '').replace(regScript, '')
// 5.3 写入 index.html 这个文件
fs.writeFile(path.join(__dirname, './clock/index.html'), newHTML, function(err) {
if (err) return console.log('写入 HTML 文件失败!' + err.message)
console.log('写入 HTML 页面成功!')
})
}
服务器和电脑的区别就在于——电脑中有没有安装web服务器软件
网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器
http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer0 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。
如果要希望使用 http 模块创建 Web 服务器,则需要先导入它:
const http = require('http')