Node——文件路径问题与回调函数

1. 文件操作路径和模块标识路径问题

模块标识

var fs = require('fs')

// 咱们所使用的所有文件操作的 API 都是异步的
// 就像你的 ajax 请求一样
// 文件操作中的相对路径可以省略 ./
// fs.readFile('data/a.txt', function (err, data) {
// if (err) {
//	 return console.log('读取失败')
//		 }
// 	console.log(data.toString())
// 		})

// 在模块加载中,相对路径中的 ./ 不能省略
// Error: Cannot find module 'data/foo.js'
// require('data/foo.js')

// require('./data/foo.js')('hello')

// 在文件操作的相对路径中
// ./data/a.txt 相对于当前目录
// data/a.txt 相对于当前目录
// /data/a.txt 绝对路径,当前文件模块所处磁盘根目录
// c:/xx/xx... 绝对路径
// fs.readFile('./data/a.txt', function (err, data) {
//	 if (err) {
// 		console.log(err)
// 		return console.log('读取失败')
// 			}
//		 console.log(data.toString())
// })

// 这里如果忽略了 . 则也是磁盘根目录
require('/data/foo.js')

2. express 的helloworld

先npm init --yes 再 npm i -S express

var express = require('express')

// 1. 创建 app
var app = express()

// 当以 /public/ 开头的时候,去 ./public/ 目录中找找对应的资源
// 这种方式更容易辨识,推荐这种方式
// app.use('/public/', express.static('./public/'))

// 必须是 /a/puiblic目录中的资源具体路径
// app.use('/abc/d/', express.static('./public/'))

// 当省略第一个参数的时候,则可以通过 省略 /public 的方式来访问
// 这种方式的好处就是可以省略 /public/
app.use(express.static('./public/'))

//req 请求对象 res 响应对象
app.get('/', function (req, res) {
	res.send('hello world')
})

app.listen(3000, function () {
	console.log('express app is running ...')
})


3. nodemon命令行工具

nodemon需要进行独立安装 全局

npm install --global nodemon

安装后 使用

nodemon app.js     启动服务

改动代码后 ctrl+s 进行刷新

4. 静态文件路径

http://expressjs.com/en/starter/static-files.html

查看官网

express.static(root, [options])

// /public资源
app.use(express.static('public'))

// /file资源
app.use(express.static('files'))

// /public/xxx
app.use('/public', express.static('public'))

// /static/xxx
app.use('/static', express.static('public'))

app.use('/static', express.static(path.join(__dirname, 'public')))

5. 回调函数

// function fn(callback) {
// // var callback = function (data) { console.log(data) }

// // setTimeout(function () {
// // var data = 'hello'
// // return data
// // }, 1000)

// // var data = '默认数据'
// // setTimeout(function () {
// // data = 'hello'
// // }, 1000)
// // return data

// setTimeout(function () {
// var data = 'hello'
// callback(data)
// }, 1000)
// }

// // 调用 fn ,得到内部的 data
// // console.log(fn())

// // 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取
// fn(function (data) {
// console.log(data)
// })


function fn(callback) {
// var callback = function (data) { console.log(data) }

setTimeout(function () {
    var data = 'hello'
    callback(data)
    }, 1000)
}

// 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取
fn(function (data) {
    console.log(data)
})

// $.get('dsadsadsa?foo=bar', function (data) {
// })

// $.ajax({
// url: 'dsadsa',
// type: 'get',
//     data: {
//     foo: 'bar'
//     },
// // 使用者只负责传递,封装者需要去调用
//   success: function () {
//     }
// })

// function ajax(options) {
//     options.success(data)
// }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值