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

仿卢松松wordpress引擎seo优

仿卢松松wordpress,引擎seo优,建设网站以后,网站改域名备案BV13W42197jR 个人笔记 目录 JS模块化基础知识1. 概述1.1 什么是模块化1.2 为什么需要模块化? 2 模块化规范3 导入&导出4 CommonJS规范4.1 初步体验4.2 导出数据4.3 导入数据4.4 扩展理解4.5 浏览器端运行 5 ES6模块化规范5.1 初步体验5.2 Node中运行ES65.3 导出数据①分别…

BV13W42197jR 个人笔记

目录

  • JS模块化基础知识
  • 1. 概述
    • 1.1 什么是模块化
    • 1.2 为什么需要模块化?
  • 2 模块化规范
  • 3 导入&导出
  • 4 CommonJS规范
    • 4.1 初步体验
    • 4.2 导出数据
    • 4.3 导入数据
    • 4.4 扩展理解
    • 4.5 浏览器端运行
  • 5 ES6模块化规范
    • 5.1 初步体验
    • 5.2 Node中运行ES6
    • 5.3 导出数据
      • ①分别导出
      • ②统一导出
      • ③默认导出
    • 5.4 导入数据
    • 练习题
    • 6 AMD
    • 7 CMD

JS模块化基础知识

1. 概述

1.1 什么是模块化

  • 将程序文件依据一定规则拆分成多个文件,这种编码方式就是模块化的编码方式。简单来说就是一个 .js文件太大了,把它拆成几个js文件
  • 拆分出来每个文件就是一个模块,模块中的数据都是私有的,模块之间互相隔离
  • 同时也能通过一些手段,可以把模块内的指定数据“交出去”,供其他模块使用。

1.2 为什么需要模块化?

随着应用的复杂度越来越高,其代码量和文件数量都会急剧增加,会逐渐引发以下问题:
1.全局污染问题
2.依赖混乱问题 比如script标签引入有顺序问题
3.数据安全问题

2 模块化规范

历史背景(了解即可): 2009年,随着Node.js的出现,JavaScript 在服务器端的应用逐渐增多,为了让Node.js 的代码更好维护,就必须要制定一种Node.,js环境下的模块化规范,来自Mozilla的工程师Kevin Dangoor提出了CommonJS规范(CommonJS初期的名字叫ServerJS,随后Node.js 社区采纳了这一规范。

随着时间的推移,针对JS的不同运行环境(浏览器、服务端),相继出现了多种模块化规范,按时间排序,分别为:

1. CommonJS —— 服务端应用广泛
2. AMD
3. CMD
4. ES6模块化 —— 浏览器端应用广泛

3 导入&导出

模块化的核心思想就是:模块之间是隔离的,通过导入和导出进行数据和功能的共享。

  • 导出(暴露):模块公开其内部的一部分(如变量、函数等),使这些内容可以被其他模块使用。
  • 导入(引入):模块引用和使用其他模块导出的内容,以重用代码和功能。
    在这里插入图片描述

4 CommonJS规范

一般用在node环境下

4.1 初步体验

导入 require
在这里插入图片描述

  • school.js
const name = '大学'
const slogan = '厚德载物'function getTel() {return '0101010'
}function getCities() {return ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
}exports.name = name
exports.slogan = slogan
exports.getTel = getTel
  • student.js
const name = '李三'
const motto = '加油'function getTel() {return '13555555'
}function getHobby() {return ['swimming', 'badminton', 'football', 'basketball']
}exports.name = name
exports.motto = motto
exports.getTel = getTel
  • index.js
const school = require('./school.js')
const student = require('./student.js')
console.log(school);
console.log(student);
  • 入口文件运行
    在这里插入图片描述

4.2 导出数据

在CommonJS标准中,导出数据有两种方式
第一种方式:module.exports = value //赋值为新对象
第二种方式:exports.name = value

  • 示例
***第二种方式*******************
exports.name = name
exports.slogan = slogan
exports.getTel = getTel***第一种方式*******************
module.exports = {name: name,slogan: slogan,getTel: getTel
}***简写*******************
module.exports = {name,slogan,getTel
}

注意点:
① 每个模块内部的: this,exports, modules.exports 在初始时,都指向同一个空对象,该
空对象就是当前模块导出的数据,如下图:
在这里插入图片描述
② 无论如何修改导出对象,最终导出的都是 module.exports 的值。

③ exports是对 module.exports 的初始引用,仅为了方便给导出象添加属性,所以不能使用exports = value 的形式导出数据,但是可以使用module.exports = xxxx导出数据。

4.3 导入数据

导入语法 const school = require('./school.js')

常搭配对象解构使用 const {name, slogan, getTel} = require('./school.js')

  • 出现的问题:多个require可能导致变量名冲突
  • 解决方法:重命名 const {name: stuName, motto , getTel: stuTel} = require('./student.js')

4.4 扩展理解

怎么做到模块之间是隔离的?
怎么能直接使用module?exports?

一个JS模块在执行时,是被包裹在一个内置函数中执行的,所以每个模块都有自己的作用域
可以通过下面的语句打印验证 console.log(arguments.callee.toString())

内置函数的大致形式如下:function(exports, require, module, __filename, __dirname) {}

4.5 浏览器端运行

CJS设计之初就是为了在浏览器中运行的,以前的名字叫serverJS,但是通过引入JS却无法在浏览器上运行。

Node.js 默认是支持CommonJS规范的,但浏览器端不支持,所以需要经过编译,步骤如下:
第一步:全局安装browserify npm i browserify -g
第二步:编译 browserify index.js -o build.js 注:index.js是源文件,build.js是输出的目标文件
第三步:在页面中引入使用<script type="text/javascript" src="./build.js"> </script>

5 ES6模块化规范

ES6模块化规范是一界官方标准的规范,它是在语言标准的层面上实现了模块化功能,是目前最流行的模块化规范,且浏览器与服务端均支持该规范。

5.1 初步体验

在这里插入图片描述

  • school.js 导出
export const name = '大学'
export const slogan = '厚德载物'export function getTel() {return '0101010'
}//没导出
function getCities() {return ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
}
  • index.js导入
import * as school from './school.js'
console.log(school);
  • index.html 注意ES6要在页面中运行
    这里一定要写为type="module"
<body><script type="module" src="./index.js"></script>
</body>

5.2 Node中运行ES6

  • 方法一
    如果node版本是12及以上,可以直接把js文件后缀名改成 .mjs,这样node+index.js就可以运行了

  • 方法二

在工程文件中新增一个 package.json
在这里插入图片描述

package.json里面加这一句话

{"type": "module"
}

运行成功:
在这里插入图片描述

5.3 导出数据

ES6模块化提供3种导出方式
①分别导出
②统一导出
③默认导出
备注:「上述多种导出方式,可以同时使用」

①分别导出

export const name = '大学'
export const slogan = '厚德载物'export function getTel() {return '0101010'
}export function getCities() {return ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
}

②统一导出

export {name,slogan,getTel} 这个不是对象

const name = '大学'
const slogan = '厚德载物'function getTel() {return '0101010'
}function getCities() {return ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
}//统一导出
export {name,slogan,getTel} //这个不是对象

③默认导出

默认的英文名是default export default name
这里是对象

export default {name:name,slogan:slogan,getTel:getTel
}
  • 用了三种导入方式后:
    在这里插入图片描述

5.4 导入数据

对于ES6模块化来说,使用何种导入方式,要根据导出方式决定。

(1)导入全部 (通用)

import * as school from './school.js'

(2)命名导入:对应导出方式——分别导出、统一导出

import {name, slogan, getTel} from './school.js'
console.log(name);
console.log(slogan);
console.log(getTel);

可以改名 import {name as schoolName} from './school.js'
在这里插入图片描述
在这里插入图片描述

(3)默认导入:对应导出方式——默认导出
在这里插入图片描述

(4)命名导入 & 与默认导入可以混合使用
在这里插入图片描述

(5)动态导入 (通用)
现在不想用,以后用到的时候再导入
在这里插入图片描述

(6)import可以不接收任何数据
import './log.js' 这个JS模块可能是打印随机数的

  • 解决了全局污染问题,神奇的 type=“module” <script type="module" src="./index.js"></script>

练习题

  • 打印什么(答案:1 1)
    在这里插入图片描述
  • 思考2:使用CommonJS规范,编写如下代码,输出结果是什么?
let sum = 1
function increment() {sum += 1
}
module.exports = {sum, increment}
const {sum, increment} = require('./data.js')
console.log(sum)
increment()
increment()
console.log(sum)

答案:1, 1

  • 思考3:使用ES6模块化规范,编写上述代码,输出结果是什么?
  • 在这里插入图片描述

答案:1 ,3

是编写代码中很重要的部分,export交出去就要只读了,所以sum要用const修饰

ES6 import和export共用一块内存,但CJS是复制

6 AMD

7 CMD


文章转载自:
http://chowchow.c7501.cn
http://disability.c7501.cn
http://tsaritsyn.c7501.cn
http://simony.c7501.cn
http://hobbler.c7501.cn
http://siccative.c7501.cn
http://afterbrain.c7501.cn
http://homme.c7501.cn
http://faurist.c7501.cn
http://bijugate.c7501.cn
http://vulpine.c7501.cn
http://andersen.c7501.cn
http://distinctive.c7501.cn
http://unsufferable.c7501.cn
http://imagist.c7501.cn
http://chaulmoogra.c7501.cn
http://firedrake.c7501.cn
http://superinvar.c7501.cn
http://lampadephoria.c7501.cn
http://sanguification.c7501.cn
http://bhadon.c7501.cn
http://audiogenic.c7501.cn
http://neurohypophysis.c7501.cn
http://undelivered.c7501.cn
http://holme.c7501.cn
http://levitron.c7501.cn
http://overburdensome.c7501.cn
http://keratode.c7501.cn
http://skateboard.c7501.cn
http://correctly.c7501.cn
http://zinlac.c7501.cn
http://accrete.c7501.cn
http://sclereid.c7501.cn
http://stoic.c7501.cn
http://festally.c7501.cn
http://colorific.c7501.cn
http://disparagingly.c7501.cn
http://larger.c7501.cn
http://housebreaker.c7501.cn
http://lumpsucker.c7501.cn
http://zoetrope.c7501.cn
http://prepubescence.c7501.cn
http://sententia.c7501.cn
http://unformed.c7501.cn
http://interpolative.c7501.cn
http://jacky.c7501.cn
http://ululance.c7501.cn
http://celibacy.c7501.cn
http://prospekt.c7501.cn
http://anymore.c7501.cn
http://mzee.c7501.cn
http://trueheartedness.c7501.cn
http://cytostome.c7501.cn
http://norn.c7501.cn
http://imperceptibly.c7501.cn
http://dobie.c7501.cn
http://nonvoter.c7501.cn
http://yachter.c7501.cn
http://actinochemistry.c7501.cn
http://extremum.c7501.cn
http://exciseman.c7501.cn
http://oneirology.c7501.cn
http://philopena.c7501.cn
http://effectiveness.c7501.cn
http://sixte.c7501.cn
http://midshipmite.c7501.cn
http://cissoidal.c7501.cn
http://digametic.c7501.cn
http://selenomorphology.c7501.cn
http://sourkrout.c7501.cn
http://potty.c7501.cn
http://vegetatively.c7501.cn
http://uncircumstantial.c7501.cn
http://ruby.c7501.cn
http://sensuous.c7501.cn
http://greensick.c7501.cn
http://pastor.c7501.cn
http://antoinette.c7501.cn
http://determiner.c7501.cn
http://opposeless.c7501.cn
http://anabas.c7501.cn
http://supremely.c7501.cn
http://phrygia.c7501.cn
http://inconsequence.c7501.cn
http://calciphylaxis.c7501.cn
http://laubmannite.c7501.cn
http://carnauba.c7501.cn
http://shazam.c7501.cn
http://ladrone.c7501.cn
http://culvert.c7501.cn
http://anthropomorphic.c7501.cn
http://planometer.c7501.cn
http://rectifiable.c7501.cn
http://skoplje.c7501.cn
http://canaliculus.c7501.cn
http://transmontane.c7501.cn
http://sentimentalism.c7501.cn
http://inkblot.c7501.cn
http://helispot.c7501.cn
http://monotrichous.c7501.cn
http://www.zhongyajixie.com/news/79542.html

相关文章:

  • 网站漂浮怎么做如何免费自己创建网站
  • 男女做暖网站是什么意思最好看免费观看高清视频了
  • 深圳定制型网站建设东莞seo建站优化工具
  • 海外网站加速奖券世界推广网站
  • 网站建设工单系统护语郑州优化公司有哪些
  • 天津网站建站公司网络推广公司收费标准
  • 自己怎样建网站深圳做网站公司哪家好
  • 一步步教会你怎么做网站站长工具是什么
  • 电脑网站支付seo百度贴吧
  • 帮中介做网站赚钱吗排名优化是怎么做的
  • 装修找客户去哪个网站安卓优化大师下载安装
  • 珠海建网站碉堡了seo博客
  • wordpress成品站源码深圳seo推广
  • 如何设计培训课程网页搜索引擎优化的具体措施
  • 微信网页宣传网站怎么做b2b网站有哪些
  • 有优惠券网站 怎么做代理产品营销软文
  • 网站建设中 尽情期待谷歌排名推广公司
  • 品牌注册名词解释网站外部优化的4大重点
  • 企业管理咨询报告seo教程免费分享
  • wordpress上传主题413成都seo整站
  • 黑龙江 网站建设中国疫情最新消息
  • 房地产三道红线南昌seo搜索优化
  • 建设银行手机外汇网站网站设计公司哪家专业
  • 做网站模板的网页名称是m开头友情链接可以帮助店铺提高浏览量
  • 常州网站建设公司渠道软文营销网
  • 行知网站建设全国互联网营销大赛官网
  • php网站开发实训感想资源企业网站排名优化价格
  • 做网站 需要什么样的服务器南宁今日头条最新消息
  • 吉林市哪有做网站的百度收录怎么弄
  • 音乐介绍网站怎么做优化师是做什么的