node基础篇二:模块、路由、全局变量课堂(持续)

时间:2023-03-08 16:12:50
node基础篇二:模块、路由、全局变量课堂(持续)

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

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

首先新建一个module.js

内容如下:

function Hello() {
let name;
this.sayname = (name)=>{
console.log(name);
}

};
function hello(obj){
this.sayhello = () =>{
if(obj.name != undefined)console.log(obj.name);
}
}
module.exports = { Hello , hello};
那么在前端中怎么去调用模块呢?我们可以用require直接导入代码如下:
//main.js
var Hello = require('./module');
// var sayname =new Hello.Hello();
// sayname.sayname('zhangsan');
let sayhellow = new Hello.hello({name:'lisi'});
sayhellow.sayhello();

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

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

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

// console.time('1');
// for(let i= 0 ;i<10000000000;i++){

// }
// console.timeEnd('1');

// console.log(__filename);  返回文件路径

//process   on exit  程序退出时候调用
// process.on('exit',function(code){
//   console.log('退出码为:', code);
// })
// console.log("程序执行结束");

// process.argv.forEach(function (val, index, array) {
//   console.log(index + ': ' + val);
// });

//获取程序执行路径   node

// console.log(process.execPath);

//平台信息
// console.log(process.platform);
//返回文件夹路径
// console.log(process.cwd());
//获得gid和uid
//gid  获取进程的群组标识
//uid  获取进程的用户标识
// console.log(process.getegid());
// console.log(process.getuid());
//    getgroups()返回进程的群组 iD 数组
// console.(log(process.getgroups());
// console.log(process.config);
// console.log(process.uptime());
// 输出流 不推荐了  可以用console替代
// process.stdout.write('1');
// let a = process.argv;
// process.stdout.write(a.toString());
//argv 属性返回一个数组,由命令行执行脚本时的各个参数组成。它的第一个成员总是node,第二个成员是脚本文件名,其余成员是脚本文件的参数。
// console.log(process.argv)
//返回当前设备的cpu架构   x64 ia32 arm
// console.log(process.arch);
//运行程序所在的平台系统 'darwin', 'freebsd', 'linux', 'sunos' 或 'win32'
// console.log(process.platform);

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

最后预祝大家工作顺利