今天继续更新node基础篇,今天主要内容是模块、路由和全局变量。

模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例子:

首先新建一个module.js

内容如下:

  1. function Hello() {
  2. let name;
  3. this.sayname = (name)=>{
  4. console.log(name);
  5. }
  6.  
  7. };
  8. function hello(obj){
  9. this.sayhello = () =>{
  10. if(obj.name != undefined)console.log(obj.name);
  11. }
  12. }
  13. module.exports = { Hello , hello};
 
那么在前端中怎么去调用模块呢?我们可以用require直接导入代码如下:

  1. //main.js
  2. var Hello = require('./module');
  3. // var sayname =new Hello.Hello();
  4. // sayname.sayname('zhangsan');
  5. let sayhellow = new Hello.hello({name:'lisi'});
  6. sayhellow.sayhello();

有的朋友可能问了。为什么跟系统不一样的呢,系统的我不用new 啊。确实,咱们自己的这样不好看. 那么朋友可以尝试下面这样的方法

  1. function Hello() {
  2. let name;
  3. this.sayname = (name)=>{
  4. console.log(name);
  5. }
  6. };
  7. function hello(obj){
  8. this.sayhello = () =>{
  9. if(obj.name != undefined)console.log(obj.name);
  10. }
  11. }
  12. let func1 = new Hello();
  13. let func2 = new hello({name:'lisi'});
  14. module.exports ={
  15. func1,func2
  16. }
  1. //main.js
  2. var Hello = require('./module');
  3. // var sayname =new Hello.Hello();
  4. Hello.func1.sayname('zhangsan');
  5. // let sayhellow = new Hello.hello({name:'lisi'});
  6. Hello.func2.sayhello();
 这样是不是就好看了。省去了每一次都需要new。 有朋友可能还会有所疑问。为什么官方的不用路径?因为它们统一吧文件放在鱼node_module这个文件夹了,同样的官方的也可以使用路径去调用,只不过没人那么做而已
 
 
下面讲一下路由:
路由是什么?简单来说就是你去往每个页面都要有一个路径,这些路径的集合。就可以认为是路由
咱们node的路由比较不好,不像php一样。根本不需要我们做过多工作,阿帕奇全帮我们搞好了,不过node中有个express框架。可以帮助我们,推荐想用node做网站的都必须要会的,这篇文章因为从基础开始,没讲到express。同样照顾新手,没有引入express。想学习express的朋友
可以持续关注咱们的课程。
  1. const http = require('http');
  2. const Url = require('url');
  3. const fs = require('fs');
  4. cs = (req,res)=>{
  5. if(req.url != '/favicon.ico'){
  6. res.setHeader('content-type','text/html;charset=UTF-8');
  7. let parseurl = Url.parse(req.url).pathname;
  8. switch (parseurl) {
  9. case '/index':
  10. res.write('<h1>首页</h1>');
  11. break;
  12. case '/shop':
  13. res.write('<h1>购物页</h1>');
  14. break;
  15. case '/people':
  16. res.write('<h1>个人页</h1>');
  17. break;
  18. case '/news':
  19. let data = fs.readFileSync('./index.html');
  20. res.write(data);
  21. break;
  22. default:
  23. break;
  24. }
  25. res.end();
  26. }
  27. }
  28. http.createServer(cs).listen(8000)
  29. console.log('server is start!');

大概就是这样。用switch就可以了。这个不多讲了。大家应该有js基础的都能理解吧。后面的express时候在讲

  1. // console.time('1');
  2. // for(let i= 0 ;i<10000000000;i++){
  3.  
  4. // }
  5. // console.timeEnd('1');
  6.  
  7. // console.log(__filename); 返回文件路径
  8.  
  9. //process on exit 程序退出时候调用
  10. // process.on('exit',function(code){
  11. // console.log('退出码为:', code);
  12. // })
  13. // console.log("程序执行结束");
  14.  
  15. // process.argv.forEach(function (val, index, array) {
  16. // console.log(index + ': ' + val);
  17. // });
  18.  
  19. //获取程序执行路径 node
  20.  
  21. // console.log(process.execPath);
  22.  
  23. //平台信息
  24. // console.log(process.platform);
  25. //返回文件夹路径
  26. // console.log(process.cwd());
  27. //获得gid和uid
  28. //gid 获取进程的群组标识
  29. //uid 获取进程的用户标识
  30. // console.log(process.getegid());
  31. // console.log(process.getuid());
  32. // getgroups()返回进程的群组 iD 数组
  33. // console.(log(process.getgroups());
  34. // console.log(process.config);
  35. // console.log(process.uptime());
  36. // 输出流 不推荐了 可以用console替代
  37. // process.stdout.write('1');
  38. // let a = process.argv;
  39. // process.stdout.write(a.toString());
  40. //argv 属性返回一个数组,由命令行执行脚本时的各个参数组成。它的第一个成员总是node,第二个成员是脚本文件名,其余成员是脚本文件的参数。
  41. // console.log(process.argv)
  42. //返回当前设备的cpu架构 x64 ia32 arm
  43. // console.log(process.arch);
  44. //运行程序所在的平台系统 'darwin', 'freebsd', 'linux', 'sunos' 或 'win32'
  45. // console.log(process.platform);

官网上面的太多太杂乱 很不利于新手学习,而且很多官网都已经废弃了,在这我总结了一些常用的,大家可以参考下。 备注都写的很明白,希望大家用心学,

最后预祝大家工作顺利

 

node基础篇二:模块、路由、全局变量课堂(持续)的更多相关文章

  1. Node基础篇(模块和NPM)

    核心模块 核心模块的意义 如果只是在服务器运行JavaScript代码,意义并不大,因为无法实现任何功能(读写文件,访问网络). Node 的用处在于它本身还提供的一系列功能模块,用于与操作系统互动. ...

  2. php基础篇-二维数组排序 array_multisort

    原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...

  3. node基础(二)_模块以及处理乱码问题

    一.前言 本次内容主要包括: 1.node.js中的模块系统 2.解决上篇中服务器响应的汉字乱码问题 二.知识 1.node中的模块   分为三种: 核心模块(node定义的如前面用到的fs,http ...

  4. JavaScript笔记基础篇(二)

    基础篇主要是总结一些工作中遇到的技术问题是如何解决的,应为本人属于刚入行阶段技术并非大神如果笔记中有哪些错误,或者自己的一些想法希望大家多多交流互相学习. 1.ToFixed()函数 今天在做Birt ...

  5. docker+k8s基础篇二

    Docker+K8s基础篇(二) docker的资源控制 A:docker的资源限制 Kubernetes的基础篇 A:DevOps的介绍 B:Kubernetes的架构概述 C:Kubernetes ...

  6. Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

    转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...

  7. node(基础三)_模块系统基础

      一.前言                                                                                         这篇文章主 ...

  8. NIO相关基础篇二

    转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...

  9. Python基础篇(二)_基本数据类型

    Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...

随机推荐

  1. Python学习笔记整理总结【web基础】【web/HTML/CSS/JavaScript/DOM/jQuery】

    一.HTML HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以 ...

  2. vue+echarts 动态绘制图表以及异步加载数据

    前言 背景:vue写的后台管理,需要将表格数据绘制成图表(折线图,柱状图),图表数据都是通过接口请求回来的. 安装 cnpm install echarts --s (我这里用了淘宝镜像,不知道同学自 ...

  3. 【转】vscode: Visual Studio Code 常用快捷键

    原文链接:https://www.cnblogs.com/bindong/p/6045957.html vscode: Visual Studio Code 常用快捷键 主命令框 F1 或 Ctrl+ ...

  4. OpenCASCADE 参数曲线曲面面积

    OpenCASCADE 参数曲线曲面面积 eryar@163.com Abstract. 本文介绍了参数曲面的第一基本公式,并应用曲面的第一基本公式,结合OpenCASCADE中计算多重积分的类,对任 ...

  5. 分享一个好用的微信npmjs包

    https://www.npmjs.com/package/jquery_wechat_sdk 安装 $ npm install jquery_wechat_sdk 使用 Browser Script ...

  6. 4、C#基础 - C# 的 常见概念简述

    在上篇文章中,你跟着我写了一个HelloWorld,本篇中,我们来谈谈一些C#程序中的小概念 1.C# 程序结构 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declarat ...

  7. Python--Pycharm backup_ver1.py 控制台一直Backup FAILED

    1.windows不自带zip,需自行安装,http://gnuwin32.sourceforge.net/packages/zip.htm 2.安装后,要配置环境变量:PATH 3.简明Python ...

  8. C#中的Explicit和Implicit

    今天在Review一个老项目的时候,看到一段奇怪的代码. if (dto.Payment == null) continue; var entity = entries.FirstOrDefault( ...

  9. python文件和文件夹訪问File and Directory Access

    http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...

  10. 自己定义View Controller转换动画

    原文链接 : Introduction to Custom View Controller Transitions and Animations 原文作者 : joyce echessa 译文出自 : ...