Think before you speak, read before you think.

nodejs

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
request.params.name
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 express@4.9
response.send();
blocks = [“a”, “b”, “c”];
response.send(blocks);
curl 查看 header 会发现自动解析成 json
等同于
response.json(blocks);
302跳转
response.redirect(‘/parts’);
301跳转
response.redirect(301, ‘/parts’);

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *