nodejs基础理解

//node 基本模型
function (exports, require, module, __filename, __dirname) {
    console.log(arguments.callee + "")
    //exports === module.exports
    //modult.exports 几种形式
    modult.exports = {
        name:"zs",
        say(){
            console.log("my name is zs")
        }
    }
    module.exports.age = 23;
    //exports 几种形式
    exports.country = "china";
    //下面这种形式是不行的,因为改变了内存地址,这种引用不出去任何东西,导出的模块仍然是 module.exports 
    exports = {

    }
}
    //只要 module.exports 赋值个新对象 不管 放在前面 还是后面 exports.age 这种都不会生效 exports = {} 更不会生效
    //module.exports = {} 是最后的模块导出结果,别的模块 app.js 引用 let t = require("t.js") t  里面只包含 zs 和 say
    exports.age = 321;
    exports.how = function () {
        console.log("my age is " + this.age)
    }
    module.exports = {
        name: "zs",
        say() {
            console.log("my name is " + this.name)
        }
    }
//生成json
npm init -y
package.json
{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "math": "^0.0.3"
  },
  "dependencies": {
    "icu": "^0.0.0"
  }
}
//常见命令
//save 包依赖  
//-g 全局工具 比如 npm i cnpm -g --registry=https://registry.npm.taobao.org
//-D 开发者依赖
//npm install/i package --save/-g/-D
//npm r package
//npm search package
//寻找包的时候 首先从 app.js node_modules 目录下寻找包 寻找不到 向上级目录中的 node_modules 寻找 一直找到根目录 最后报错
 
npm install install all the dependencies in your project
npm install <foo> add the <foo> dependency to your project
 //如果执行 cnpm version 出现下面错误 解决办法 win r 运行 PowerShell 执行 set-ExecutionPoliy RemoteSigned 回车 选择 A 问题解决 cnpm : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 
  //npm config get registry //查看当前的源registry //nrm test 测出当前可以用的 registry 前面标注*号的为当前的源 nrm ls 列出 所有源 没有 * //nrm use taobao 设置 taobao 对应的源 //powershell 也支持 ls cp 之类的 linux 命
 
//也可以一次安装多个包 中间用空格隔开
cnpm babel-cli babel-preset-env browserify -D
 
//此时因为 babel-cli 这些工具 并没有 -g 就是作为工具安装到本地电脑上 所以不能 直接运行 babel 命令 需要 npx babel
//不能为npm 因为 npm run test, test就是scripts里面配置的test 命令,npx 可以运行 非-g 安装的 工具类型的包
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
//这么经过 babel 转换之后 变成 es5 代码的js 但是 仍然是 commandJs 格式 浏览器是没有办法识别的
//新版的浏览器 es6 默认是 export 和 import 模式,而不是 node 的 commandJs 规范 所以需要 browserify 或者webpack
//的二次转换 转换成 浏览器可以识别的代码,在浏览器 index.html 的 script 里面 调用 bundle.js 就可以了
//npx babel src/js -d dest/js --presets=babel-preset-env //-d directory
//npx browserify dest/js/app.js -o dest/bundle.js //-o output
//这是一个完整的bundle.js
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use strict";

var t = require("./t");
t.say();
console.log(t);
},{"./t":2}],2:[function(require,module,exports){
"use strict";

exports.age = 321;
exports.how = function () {
    console.log("my age is " + this.age);
};

module.exports = {
    name: "zs",
    say: function say() {
        console.log("my name is " + this.name);
    }
};
//这里是注册
},{}]},{},[1]);

//生成bundle.js 之前的 app.js 代码如下:
"use strict";
var t = require("./t");
t.say();
console.log(t);

//t.js的代码如下:
"use strict";
exports.age = 321;
exports.how = function () {
    console.log("my age is " + this.age);
};
module.exports = {
    name: "zs",
    say: function say() {
        console.log("my name is " + this.name);
    }
};
//这里是注册

 


 

posted @ 2023-03-03 20:54  闭区间  阅读(14)  评论(0编辑  收藏  举报