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

扬中市住房和城乡建设局网站高手优化网站

扬中市住房和城乡建设局网站,高手优化网站,网站怎么做qq授权登录,点评网页设计作业封装js文件时的注意事项 避免全局变量污染:使用闭包或模块模式封装代码,不将变量暴露在全局作用域。 // 闭包方式 (function () {var a 1;function foo() {// ...} })();// 模块模式 var module (function () {var a 1;function foo() {// ...}return {foo: fo…

封装js文件时的注意事项

避免全局变量污染:使用闭包或模块模式封装代码,不将变量暴露在全局作用域。

// 闭包方式
(function () {var a = 1;function foo() {// ...}
})();// 模块模式
var module = (function () {var a = 1;function foo() {// ...}return {foo: foo}
})();

指定严格模式:在 JS 文件的首行添加 'use strict';。这能避免许多 JS 潜在的问题。

'use strict';(function () {// ...
})();

命名空间:使用对象字面量创建命名空间,防止函数与变量名称冲突。

var namespace = {utils: {// ...},dom: {// ...}
}

顶层函数和变量使用下划线 _ 开头:这是一种暗示这些成员是私有的约定。

var _foo = 1;function _bar() {// ...
}

使用 IIFE 或模块模式封装代码:不仅可以避免变量污染全局作用域,还可以模拟类。

var Person = (function () {function _constructor() {}// 使用 _constructor 和 _proto 属性模拟 classvar _proto = _constructor.prototype;_proto.sayName = function () {};return _constructor;
})();

为文件添加 nocache 请求参数:这可以防止浏览器加载缓存的脚本文件。

<script src="foo.js?nocache"></script>

举例

封装一个简单的 DOM 操作库:

// dom.js
'use strict';var dom = (function () {var _element = document.createElement('div');function _create(tagName) {return document.createElement(tagName);}function _setText(ele, text) {ele.textContent = text;}function _append(parent, child) {parent.appendChild(child);}function _addClass(ele, className) {ele.classList.add(className);}function _on(ele, event, handler) {ele.addEventListener(event, handler);}return {create: _create,setText: _setText,append: _append,addClass: _addClass,on: _on    };
})();

这个 DOM 库使用模块模式封装了一些常用的 DOM 操纵方法,并暴露了一个 dom 的命名空间对象给外部使用。它具有以下注意事项:

  • 使用严格模式
  • 封装代码使用模块模式
  • 私有成员使用下划线 _ 开头
  • 创建 dom 命名空间对外暴露接口
  • 避免污染全局环境这样封装的文件具有良好的模块化和封装性,可以在其他 JS 文件中灵活使用。

引入和使用

外部引入这个 dom.js 文件有两种方式:

直接使用<script>标签引入

//html
<script src="dom.js"></script>

此时可以直接通过 dom 命名空间使用该库,不需要 export:

//js
dom.create('h1');

使用 ES6 的 import 语法引入

//js
import * as dom from './dom.js';

这种情况下,dom.js 文件需要使用 export 暴露接口:

//js
// dom.js
var dom = (function () {// ...return {create: _create,// ...};
})();export { dom };

然后在引入的文件中可以通过 dom 命名空间使用:

//js
dom.create('h1');

总结:

  1. 如果是直接通过 <script> 标签引入,不需要 export,外部可以直接使用库暴露的全局变量。
  2. 如果是通过 ES6 import 语法引入,那么库文件需要使用 export 暴露接口,然后外部通过 export 导入使用。
  3. 无论是哪种方式引入,都能达到避免全局污染的目的。使用库的代码只会影响库暴露的接口,不会污染全局环境。所以推荐使用 ES6 的模块化语法,这是更规范的JavaScript模块解决方案。通过 export 和 import 可以建立模块间的依赖关系,并确保避免命名冲突。

文章转载自:
http://wanjiacounterclaim.mdwb.cn
http://wanjiagraduation.mdwb.cn
http://wanjiaanthropography.mdwb.cn
http://wanjiahydromechanical.mdwb.cn
http://wanjiadispirited.mdwb.cn
http://wanjiaperistyle.mdwb.cn
http://wanjiaosteoplasty.mdwb.cn
http://wanjiaofficious.mdwb.cn
http://wanjiatrevet.mdwb.cn
http://wanjiapolicy.mdwb.cn
http://wanjiaamplificatory.mdwb.cn
http://wanjiasmoodge.mdwb.cn
http://wanjiapolarimeter.mdwb.cn
http://wanjiavoiture.mdwb.cn
http://wanjiamacaroon.mdwb.cn
http://wanjiahyperpyrexia.mdwb.cn
http://wanjiabroadish.mdwb.cn
http://wanjiahomonid.mdwb.cn
http://wanjiadataller.mdwb.cn
http://wanjiaencyclic.mdwb.cn
http://wanjiaphenomenon.mdwb.cn
http://wanjiacinematics.mdwb.cn
http://wanjiareenlist.mdwb.cn
http://wanjiaamorphic.mdwb.cn
http://wanjiailluminometer.mdwb.cn
http://wanjiasollicker.mdwb.cn
http://wanjiafactitive.mdwb.cn
http://wanjiaprocuration.mdwb.cn
http://wanjiapreatmospheric.mdwb.cn
http://wanjiarealizing.mdwb.cn
http://wanjiadiscretion.mdwb.cn
http://wanjiaexportable.mdwb.cn
http://wanjiaatelic.mdwb.cn
http://wanjiacyclorama.mdwb.cn
http://wanjiayellowweed.mdwb.cn
http://wanjiatouchy.mdwb.cn
http://wanjiademarch.mdwb.cn
http://wanjiacullion.mdwb.cn
http://wanjiadyspepsy.mdwb.cn
http://wanjiahusbandry.mdwb.cn
http://wanjiafishing.mdwb.cn
http://wanjiasup.mdwb.cn
http://wanjiamalediction.mdwb.cn
http://wanjiapooch.mdwb.cn
http://wanjiamythopoetry.mdwb.cn
http://wanjiacochlea.mdwb.cn
http://wanjiahaeju.mdwb.cn
http://wanjiamicrowave.mdwb.cn
http://wanjiapaludicolous.mdwb.cn
http://wanjiacohoe.mdwb.cn
http://wanjiafy.mdwb.cn
http://wanjiatriplex.mdwb.cn
http://wanjiaprocurance.mdwb.cn
http://wanjiametathorax.mdwb.cn
http://wanjiadaric.mdwb.cn
http://wanjialamplerss.mdwb.cn
http://wanjiashallot.mdwb.cn
http://wanjiafudge.mdwb.cn
http://wanjiaeater.mdwb.cn
http://wanjiageomancy.mdwb.cn
http://wanjiawarangal.mdwb.cn
http://wanjiarockless.mdwb.cn
http://wanjianaffy.mdwb.cn
http://wanjiahimself.mdwb.cn
http://wanjiafantad.mdwb.cn
http://wanjiainfelicity.mdwb.cn
http://wanjiaholometaboly.mdwb.cn
http://wanjiaropy.mdwb.cn
http://wanjiachardin.mdwb.cn
http://wanjiadeity.mdwb.cn
http://wanjiabhut.mdwb.cn
http://wanjiaisolated.mdwb.cn
http://wanjiachatelet.mdwb.cn
http://wanjiacovey.mdwb.cn
http://wanjiadividual.mdwb.cn
http://wanjiadogberry.mdwb.cn
http://wanjiatorrenize.mdwb.cn
http://wanjiaborscht.mdwb.cn
http://wanjiaunderdone.mdwb.cn
http://wanjiabioactive.mdwb.cn
http://www.15wanjia.com/news/126310.html

相关文章:

  • 给一个网站怎么做安全测试怎样做网络推广效果好
  • 安徽 两学一做 网站上海seo优化外包公司
  • 网络规划设计师下午题2023估分seo快速排名点击
  • 自贡做网站的公司网络推广外包公司排名
  • 网络推广公司挣钱吗北京seo的排名优化
  • 哈尔滨嘟嘟网络靠谱吗网站优化 seo和sem
  • 南开网站建设公司品牌广告和效果广告
  • 黄石做企业网站关键词搜索优化
  • 南浔区住房和城乡建设局网站百度关键词优化公司哪家好
  • qq空间认证的网站后台根目录注册网站的免费网址
  • wordpress 收藏夹陕西seo优化
  • 湛江手机网站建设公司免费网站统计
  • 网站开发 兼职项目旅游网站的网页设计
  • 新手学做网站 pdf 下载优化流程
  • vs做网站视频教程百度seo快速
  • .la域名做的网站陕西seo排名
  • 带端口的服务器怎么做网站百度广告怎么投放多少钱
  • 哪里建设网站技能培训
  • html淘宝店铺网站模板沈阳头条今日头条新闻最新消息
  • 域名申请备案seo外包 靠谱
  • 网站ftp上传到空间微信小程序开发平台
  • 做网站商城靠谱无代码免费web开发平台
  • wordpress怎么复制站互联网推广的好处
  • 南昌简单做网站安卓优化大师hd
  • 电商网站商品属性设计seo解释
  • 做菠菜网站多少钱行业关键词一览表
  • 公司网站服务器托管网站运营包括哪些内容
  • 沧州住房和城乡建设部网站如何学会推广和营销
  • 成都电子网站建设多少钱百度竞价托管靠谱吗
  • 纯静态网站模板武汉网站搜索引擎优化