node 04
Modules
Semantic Versioning
version patch
“connect”: “~2.2.1”,
“underscore”: “~1.3.3”
node 03
streams
curl –upload-file abc.jpg http://localhost:3000
node 01
fs.readFileSync
fs.readFile(‘/etc/hosts’, function(){});
setTimeout(function(){ console.log(“here we go”)}, 5000); // 等 5000ms 再运行 function
non-blocking
epxress 05
route instances
app.route()
chaining function
single application file is too long
extracting routes to modules
var router = express.Router();
set router as a express module
module.exports = router;
var router = express.Router();
router.route(‘/’);
app.use(‘/cities’, router);
router.route(‘/’)
.get(function (request, response) {
if(request.query.search){
response.json(citySearch(request.query.search));
}else{
response.json(cities);
}
})
.post(parseUrlencoded, function (request, response) {
if(request.body.description.length > 4){
var city = createCity(request.body.name, request.body.description);
response.status(201).json(city);
}else{
response.status(400).json(‘Invalid City’);
}
});
router.route(‘/:name’)
.get(function (request, response) {
var cityInfo = cities[request.cityName];
if(cityInfo){
response.json(cityInfo);
}else{
response.status(404).json(“City not found”);
}
})
.delete(function (request, response) {
if(cities[request.cityName]){
delete cities[request.cityName];
response.sendStatus(200);
}else{
response.sendStatus(404);
}
});
What function would you call to match all HTTP verbs?
app.all()
express 04
post & delete
body-parser
app.delete(‘/blocks/:name’, function(request, response){});
response.sendStatus(200);
express 03
handle routes
response.json();
/blocks?limit=1
use request.query to access query strings
blocks.slice(1, 3) from 1 , 3 items
response.status(404).json(‘No description found for ‘ + request.params.name)
maps placeholders to callback functions, and is commonly used for running pre-conditions on Dynamic Routes
app.param(‘name’, function(request, response, next){
});
javascript
array -> blocks = [‘Fixed’, ‘Movable’, ‘Rotating’];
object -> blocks = {
‘Fixed’: ‘description 1’,
‘Movable’: ‘description 2’,
‘Rotating’: ‘description 3’
}
for object , use Object.keys(blocks) get all keys of objects.
express 02
response.sendFile(__dirname + ‘/public/index.html’);
express 的 static middleware
middleware 用于检验,认证,数据解析
app.use(express.static(‘public’));
当调用一个 middleware ,可以加一个 next 调用下一个 middleware
app.use(function(request, response, next) {
next();
});
到最后一个 middleware,没有 next 则响应一个 done
app.use(function(request, response, next){
response.send(‘done!’);
});
express 使用 ajax 返回
express 01
安装 node 并指定版本
npm install [email protected]
response.send();
blocks = [“a”, “b”, “c”];
response.send(blocks);
curl 查看 header 会发现自动解析成 json
等同于
response.json(blocks);
302跳转
response.redirect(‘/parts’);
301跳转
response.redirect(301, ‘/parts’);
Leave a Reply