nodejs learnyounode pass 官方 An…

来源:互联网 发布:内裤淘宝 编辑:程序博客网 时间:2024/05/17 01:02
1. HELLO WORLD
console.log("HELLO WORLD")
2. BABY STEPS
    var result =0
    
    for (var i =2; i < process.argv.length; i++)
     result += Number(process.argv[i])
    
   console.log(result)

3. MY FIRST I/O
    var fs =require('fs')
    
    var contents= fs.readFileSync(process.argv[2])
    var lines =contents.toString().split('\n').length - 1
   console.log(lines)
    
    // note youcan avoid the .toString() by passing 'utf8' as the
    // secondargument to readFileSync, then you'll get a String!
    //
    //fs.readFileSync(process.argv[2], 'utf8').split('\n').length -1

4. MY FIRST ASYNC I/O
    var fs =require('fs')
    var file =process.argv[2]
    
   fs.readFile(file, function (err, contents) {
     // fs.readFile(file, 'utf8', callback) can also be used
     var lines = contents.toString().split('\n').length - 1
     console.log(lines)
    })

5. FILTERED LS
    var fs =require('fs')
    var path =require('path')
    
   fs.readdir(process.argv[2], function (err, list) {
     list.forEach(function (file) {
       if (path.extname(file) === '.' + process.argv[3])
         console.log(file)
     })
    })

6. MAKE IT MODULAR
solution.js:

    var filterFn= require('./solution_filter.js')
    var dir =process.argv[2]
    varfilterStr = process.argv[3]
    
   filterFn(dir, filterStr, function (err, list) {
     if (err)
       return console.error('There was an error:', err)
    
     list.forEach(function (file) {
       console.log(file)
     })
    })

solution_filter.js:

    var fs =require('fs')
    var path =require('path')
    
   module.exports = function (dir, filterStr, callback) {
    
     fs.readdir(dir, function (err, list) {
       if (err)
         return callback(err)
    
       list = list.filter(function (file) {
         return path.extname(file) === '.' + filterStr
       })
    
       callback(null, list)
     })
    }

7. HTTP CLIENT
    var http =require('http')

   http.get(process.argv[2], function (response) {
     response.setEncoding('utf8')
     response.on('data', console.log)
     response.on('error', console.error)
    })

8. HTTP COLLECTION
    var http =require('http')
    var bl =require('bl')

   http.get(process.argv[2], function (response) {
     response.pipe(bl(function (err, data) {
       if (err)
         returnconsole.error(err)
       data = data.toString()
       console.log(data.length)
       console.log(data)
     }))
    })

9. JUGGLING ASYNC
    var http =require('http')
    var bl =require('bl')
    var results = []
    var count = 0

    function printResults (){
      for(var i = 0; i < 3; i++)
       console.log(results[i])
    }

    function httpGet (index){
     http.get(process.argv[2 + index], function (response) {
       response.pipe(bl(function (err, data) {
         if (err)
           returnconsole.error(err)

         results[index] =data.toString()
         count++

         if (count == 3) // yay! weare the last one!
          printResults()
       }))
     })
    }

    for (var i = 0; i <3; i++)
     httpGet(i)

10 TIME SERVER
    var net =require('net')

    functionzeroFill(i) {
     return (i < 10 ? '0' : '') + i
    }

    function now() {
     var d = new Date()
     return d.getFullYear() + '-'
       + zeroFill(d.getMonth() + 1) + '-'
       + zeroFill(d.getDate()) + ' '
       + zeroFill(d.getHours()) + ':'
       + zeroFill(d.getMinutes())
    }

    var server =net.createServer(function (socket) {
     socket.end(now() + '\n')
    })

   server.listen(Number(process.argv[2]))

ps. 非要加个回车,真恶心,害我纠结半天

11 HTTP FILE SERVER
    var http =require('http')
    var fs =require('fs')

    var server =http.createServer(function (req, res) {
     res.writeHead(200, { 'content-type': 'text/plain' })

     fs.createReadStream(process.argv[3]).pipe(res)
    })

   server.listen(Number(process.argv[2]))

12.  HTTP UPPERCASERER
    varhttp = require('http')
    var map =require('through2-map')

    var server =http.createServer(function (req, res) {
     if (req.method != 'POST')
       return res.end('send me a POST\n')

     req.pipe(map(function (chunk) {
       return chunk.toString().toUpperCase()
     })).pipe(res)
    })

   server.listen(Number(process.argv[2]))

13.  HTTP JSON API SERVER
    var http =require('http')
    var url =require('url')

    functionparsetime (time) {
     return {
       hour: time.getHours(),
       minute: time.getMinutes(),
       second: time.getSeconds()
     }
    }

    functionunixtime (time) {
     return { unixtime : time.getTime() }
    }

    var server =http.createServer(function (req, res) {
     var parsedUrl = url.parse(req.url, true)
     var time = new Date(parsedUrl.query.iso)
     var result

     if (/^\/api\/parsetime/.test(req.url))
       result = parsetime(time)
     else if (/^\/api\/unixtime/.test(req.url))
       result = unixtime(time)

     if (result) {
       res.writeHead(200, { 'Content-Type': 'application/json' })
       res.end(JSON.stringify(result))
     } else {
       res.writeHead(404)
       res.end()
     }
    })
   server.listen(Number(process.argv[2]))
0 0