当前位置: 首页 > news >正文

佛山新网站建设服务公司网络推广专员是干什么的

佛山新网站建设服务公司,网络推广专员是干什么的,郎创网站建设,怎么建设游网站主页原生node封装一个简易的服务器, 把前面几天的知识揉和起来做一个服务器基础实现, 首页访问, 静态资源服务器, 特定接口封装, 404app.js 服务器入口文件 app.js node app.js即可启动服务器 const { start } require(./modules/server); start();require_modules.js 整合模块导…原生node封装一个简易的服务器, 把前面几天的知识揉和起来做一个服务器基础实现, 首页访问, 静态资源服务器, 特定接口封装, 404app.js 服务器入口文件 app.js node app.js即可启动服务器 const { start } require(./modules/server); start();require_modules.js 整合模块导出 const url require(url); const path require(path); const http require(http); const querystring require(querystring); const fs require(fs); const multiparty require(multiparty);module.exports {url,path,http,querystring,fs,multiparty }; server.js server 启动模块 const { http } require(./require_modules); const { port, host } require(./config); const { route } require(./router);function start() {const server http.createServer((req, res) {route(req, res);});server.listen(port, host, () {console.log(server listening in http://${host}:${port});}); } module.exports { start }; router.js 路由模块, 以及接口处理函数对照表 const { url } require(./require_modules); const { host, port } require(./config); const { staticHanlder, indexHanlder, tableHanlder, notFind } require(./hanlder); const hanlder {/index: indexHanlder,/static: staticHanlder,/index: indexHanlder,/getTableData: tableHanlder,404: notFind }; const route (req, res) {const thisURL new URL(http://${host}:${port}${req.url});let pathname thisURL.pathname;if (pathname /) {pathname /index/;}const thisHanlder Object.entries(hanlder).find(([key, val]) {let reg new RegExp(^${key}/.*);return reg.test(pathname);})?.[1] ?? hanlder[404];thisHanlder(req, res, pathname); }; module.exports { route };hanlder.js 接口处理函数模块 const { fs, path, querystring } require(../modules/require_modules); const { getMimeType } require(../modules/mime_type); const { root } require(./config); const { host, port } require(./config);function staticHanlder(req, res, pathname) {res.writeHeader(200, { content-type: getMimeType(pathname) });const filePath path.join(root, pathname);fs.stat(filePath, (err, stats) {if (err) {notFind(req, res, pathname);return;}if (!stats) {notFind(req, res, pathname);return;}if (stats.isDirectory()) {notFind(req, res, pathname);return;}if (stats.isFile()) {fs.readFile(filePath, (err, data) {if (err) {notFind(req, res, pathname);}res.writeHeader(200, { content-type: getMimeType(pathname) });res.end(data);});return;}}); } function indexHanlder(req, res, pathname) {res.writeHeader(200, { content-type: text/html;charsetutf-8 });res.end(!DOCTYPE htmlhtml langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /titleindex/title/headbodyh1欢迎~/h1/body/html); } function tableHanlder(req, res, pathname) {const thisURL new URL(http://${host}:${port}${req.url});let search thisURL.search.replace(?, );const searchInfo querystring.parse(search);let start Number(searchInfo.start) || 0;let end Number(searchInfo.end) || start 10;const jsonPath path.join(root, /data/table.json);fs.readFile(jsonPath, (err, data) {if (err) {notFind(req, res, pathname);return;}const jsonData JSON.parse(data.toString(utf-8));const resData jsonData.slice(start, end);res.writeHeader(200, { content-type: application/json;charsetutf-8 });res.end(JSON.stringify(resData));}); }function notFind(req, res, pathname) {res.writeHeader(404, { content-type: text/html;charsetutf-8 });res.end(!DOCTYPE htmlhtml langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /title404/title/headbodyh1not find/h1/body/html); } function serverError(req, res, pathname) {res.writeHeader(500, { content-type: text/html;charsetutf-8 });res.end(!DOCTYPE htmlhtml langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /title500/title/headbodyh1server error/h1/body/html); } module.exports {staticHanlder,indexHanlder,tableHanlder,notFind,serverError };mime_type.js 其它模块, 用于获取媒体文件类型 const { path } require(../modules/require_modules); const MIME_TYPE {css: text/css,gif: image/gif,html: text/html,ico: image/x-icon,jpeg: image/jpeg,jpg: image/jpeg,js: text/javascript,json: application/json,pdf: application/pdf,png: image/png,svg: image/svgxml,swf: application/x-shockwave-flash,tiff: image/tiff,txt: text/plain,wav: audio/x-wav,wma: audio/x-ms-wma,wmv: video/x-ms-wmv,xml: text/xml };function getMimeType(pathname) {let ext path.extname(pathname).replace(., ).toLowerCase();if (!ext) {ext pathname;}return MIME_TYPE[ext] || MIME_TYPE[txt]; } module.exports {getMimeType };config.js 其它模块 服务器基本信息配置 module.exports {root: process.cwd(),host: 127.0.0.1,port: 3008 };其实这就是node框架express做的事情 封装服务器有着比较繁琐的过程, 这只是一个简单的模型演示, 比如需要封装上传文件的接口, 你可以用到第三方库multiparty, 需要处理ajax跨域, 你可以封装一个前面学的跨域处理函数 :-)
http://www.yutouwan.com/news/308868/

相关文章:

  • 福建省建设系统网站wordpress 域名 根目录
  • 网站前台模板设计网站上线前需要做什么
  • 河北省建设工程安全生产网站wordpress文章文件
  • wordpress社团网站商标图案参考
  • 个人网站备案需要哪些北京建站模板源码
  • 怎么做网站后期维护wordpress第三方评论
  • 欧美风格网站模版手机电脑同步网站开发
  • 榆次做企业网站河北网站优化公司
  • 安平有做农产品的网站被wordpress关键词插件
  • 如何选择丹徒网站建设河南企业网官方网站
  • 商城网站模版代码长沙做网站找谁
  • 外贸营销型建站网站建设适合的企业
  • 沈阳方正建设监理网站北京公司注册地址查询
  • 供灯放生网站开发中国建筑官网一测二测成绩多少算及格
  • 重庆网站seo按天计费怎么修改wordpress主题字体
  • 网站建设公司的公司排名手机网站的后台管理
  • 济南网站搜索排名北京网站案例
  • 电商网站建设技术可行性分析怎么看wordpress用了哪个主题
  • 10个零网站建设建e网室内设计网下载
  • 网上书城网站开发的目的与意义中国建设的网站
  • 中国空间站扩展网站设计用户体验
  • 正阳县网站建设个体户网站备案
  • 手机建设网站的目的阿里云虚拟主机怎么建设网站
  • 从哪些方面评价一个企业的网站建设互联网挣钱项目平台
  • 学校网站如何建设网站建设的前后台代码
  • 东莞住房和城乡建设厅网站建设什么样的网站月入一万
  • 哪个网站可以做效果图wordpress strip_tags
  • 做电影网站侵权吗一流的江苏网站建设
  • soho外贸网站用jsp做的网站源代码
  • 网站开发学些什么北京王府井简介