http - server 코드 학습

36303 단어 NodeJS
npm install webpack - dev - server -- save - dev "scripts": {"start": "webpack - dev - server -- env development", "build": "webpack -- env production"} npm run start 또는 npm start 를 통 해 npm install webpack - cli - D 를 실 행 했 습 니 다. 그 중 - D 는 -- save - dev 입 니 다. 생산 환경 에 의존 하려 면 -- save 면 됩 니 다.
상용 가방
JS-SDK:                             ,   js-sdk             ,  ,  ,          ,          ,     
koa:           ,          
request:    ,   http request   
ejs  :          xml ,     ejs       xml 
lodash:      ,    ,    
Heredoc:               
row-body:     http            
sha1:      hash  
xml2js:      xml    js  

  :love_program
  :https://www.jianshu.com/p/efc7dbc1590d
  :  
        。             ,          。
/*
 *     
 * 
 */
'use strict'

var ejs = require('ejs');
var heredoc = require('heredoc');

var tpl = heredoc(function(){/*
	
		]]>
		]]>
		
		]]>
		
			]]>
		
			
				]]>
			
		
			
				]]>
			
		
			 	
		
			
				]]>
				]]>
				]]>
				]]>
				]]>	
			
		
			
			
				
				
					]]> 
					]]>
					]]>
					]]>
				
				
			
			
	
*/});

var compiled = ejs.compile(tpl);

exports = module.exports = {
	compiled:compiled
};
#!/usr/bin/env node

'use strict';

var colors     = require('colors/safe'),
    os         = require('os'),
    httpServer = require('../lib/http-server'),
    portfinder = require('portfinder'),
    opener     = require('opener'),
    argv       = require('optimist')
      .boolean('cors')
      .argv;

var ifaces = os.networkInterfaces();

if (argv.h || argv.help) {
  console.log([
    'usage: http-server [path] [options]',
    '',
    'options:',
    '  -p           Port to use [8080]',
    '  -a           Address to use [0.0.0.0]',
    '  -d           Show directory listings [true]',
    '  -i           Display autoIndex [true]',
    '  -g --gzip    Serve gzip files when possible [false]',
    '  -e --ext     Default file extension if none supplied [none]',
    '  -s --silent  Suppress log messages from output',
    '  --cors[=headers]   Enable CORS via the "Access-Control-Allow-Origin" header',
    '                     Optionally provide CORS headers list separated by commas',
    '  -o [path]    Open browser window after starting the server',
    '  -c           Cache time (max-age) in seconds [3600], e.g. -c10 for 10 seconds.',
    '               To disable caching, use -c-1.',
    '  -U --utc     Use UTC time format in log messages.',
    '',
    '  -P --proxy   Fallback proxy if the request cannot be resolved. e.g.: http://someurl.com',
    '',
    '  -S --ssl     Enable https.',
    '  -C --cert    Path to ssl cert file (default: cert.pem).',
    '  -K --key     Path to ssl key file (default: key.pem).',
    '',
    '  -r --robots  Respond to /robots.txt [User-agent: *\
Disallow: /]'
, ' --no-dotfiles Do not show dotfiles', ' -h --help Print this list and exit.' ].join('
'
)); process.exit(); } var port = argv.p || parseInt(process.env.PORT, 10), host = argv.a || '0.0.0.0', ssl = !!argv.S || !!argv.ssl, proxy = argv.P || argv.proxy, utc = argv.U || argv.utc, logger; if (!argv.s && !argv.silent) { logger = { info: console.log, request: function (req, res, error) { var date = utc ? new Date().toUTCString() : new Date(); if (error) { logger.info( '[%s] "%s %s" Error (%s): "%s"', date, colors.red(req.method), colors.red(req.url), colors.red(error.status.toString()), colors.red(error.message) ); } else { logger.info( '[%s] "%s %s" "%s"', date, colors.cyan(req.method), colors.cyan(req.url), req.headers['user-agent'] ); } } }; } else if (colors) { logger = { info: function () {}, request: function () {} }; } if (!port) { portfinder.basePort = 8080; portfinder.getPort(function (err, port) { if (err) { throw err; } listen(port); }); } else { listen(port); } function listen(port) { var options = { root: argv._[0], cache: argv.c, showDir: argv.d, autoIndex: argv.i, gzip: argv.g || argv.gzip, robots: argv.r || argv.robots, ext: argv.e || argv.ext, logFn: logger.request, proxy: proxy, showDotfiles: argv.dotfiles }; if (argv.cors) { options.cors = true; if (typeof argv.cors === 'string') { options.corsHeaders = argv.cors; } } if (ssl) { options.https = { cert: argv.C || argv.cert || 'cert.pem', key: argv.K || argv.key || 'key.pem' }; } var server = httpServer.createServer(options); server.listen(port, host, function () { var canonicalHost = host === '0.0.0.0' ? '127.0.0.1' : host, protocol = ssl ? 'https://' : 'http://'; logger.info([colors.yellow('Starting up http-server, serving '), colors.cyan(server.root), ssl ? (colors.yellow(' through') + colors.cyan(' https')) : '', colors.yellow('
Available on:'
) ].join('')); if (argv.a && host !== '0.0.0.0') { logger.info((' ' + protocol + canonicalHost + ':' + colors.green(port.toString()))); } else { Object.keys(ifaces).forEach(function (dev) { ifaces[dev].forEach(function (details) { if (details.family === 'IPv4') { logger.info((' ' + protocol + details.address + ':' + colors.green(port.toString()))); } }); }); } if (typeof proxy === 'string') { logger.info('Unhandled requests will be served from: ' + proxy); } logger.info('Hit CTRL-C to stop the server'); if (argv.o) { opener( protocol + canonicalHost + ':' + port, { command: argv.o !== true ? argv.o : null } ); } }); } if (process.platform === 'win32') { require('readline').createInterface({ input: process.stdin, output: process.stdout }).on('SIGINT', function () { process.emit('SIGINT'); }); } process.on('SIGINT', function () { logger.info(colors.red('http-server stopped.')); process.exit(); }); process.on('SIGTERM', function () { logger.info(colors.red('http-server stopped.')); process.exit(); });
388 
389 LiveServer.shutdown = function() {
390     var watcher = LiveServer.watcher;
391     if (watcher) {
392         watcher.close();
393     }
394     var server = LiveServer.server;
395     if (server)
396         server.close();
397 };
398 
399 module.exports = LiveServer;
?\


#!/usr/bin/env node var path = require(‘path’); var fs = require(‘fs’); var assign = require(‘object-assign’); var liveServer = require("./index");
liveServer.start(opts);

좋은 웹페이지 즐겨찾기