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

做招聘信息的网站有哪些搜索引擎环境优化

做招聘信息的网站有哪些,搜索引擎环境优化,装修设计师要学多久,wordpress 翻页代码CommonJS 和 ESModule 混合开发 接上文,仍旧在 abc-cli 项目中参考:https://blog.csdn.net/Tyro_java/article/details/136433159现在要在脚手架项目中安装 chalk 依赖,因为在 abc-cli 项目几乎都是 CommonJS的实现而 chalk 这个依赖源码是基…

CommonJS 和 ESModule 混合开发

  • 接上文,仍旧在 abc-cli 项目中
  • 参考:https://blog.csdn.net/Tyro_java/article/details/136433159
  • 现在要在脚手架项目中安装 chalk 依赖,因为在 abc-cli 项目几乎都是 CommonJS的实现
  • 而 chalk 这个依赖源码是基于 ESModule 的,所以现在要解决的是两者的兼容
  • 先安装 chalk 到 cli 包中,在 abc-cli 目录下,$ npm i chalk -w packages/cli
  • 但是,在使用 chalk 的时候,就会报错,不能使用 require,现在有几种解决方案
    • 第一种,降级 chalk 到低版本, 大概在4.0左右,但是这就无法使用 chalk 的新特性了
    • 第二种,修改自己的代码,将之前的 require 全部修改成 import, 并且package.json中添加 "type":"module"
      • 这种会造成更大的问题:一是,之前的语法全部要修改,包括 module.exports
      • 二是,如果要使用一些只有 CommonJS 的依赖就会有问题
    • 第三种,在CommonJS中允许使用 import 来加载依赖,但是 import 返回了一个 Promise
      • 这种,只能异步拿到真实的依赖,就不好处理了
  • 现在遇到了一个问题,就是如何兼容 CommonJS 和 ESModule, 怎样才能最佳实践
  • npm 模块有的使用CommonJS, 有的使用 ESM, 两者混合开发成为 Nodejs 项目必须考虑的问题

1 )CommonJS

  • CommonJS 单独使用有两种方式
    • 1 )在 package.json 中指定 "type": "common" 这个不指定也是默认的
    • 所有js文件的的导入都用 require 语法来引用模块
    • 所有js文件的导出都用 module.exports 语法来导出
    • 2 )不管 package.json 中指定的是 "type": "common" 亦或是 "type": "module"
    • 只要js文件的后缀是 .cjs 都可以使用 requiremodule.exports 语法
    • 这样,默认走的就是 CommonJS 规范
  • 注意,module.exportsexports.xx 不能混用,两者混用,后者不生效
  • CommonJS规范默认通过自执行函数实现,比如require源码,它可以做一些变量注入
  • 比如 __dirname, __filename 都是通过注入的方式来显示的
  • 可以把它们直接打印出来

2 )ESModule

  • ESModule 也有两种使用方式
    • 1 )在package.json中定义 "type": "module",包内所有 .js 文件会被认为是 ESModule
    • 2 ).mjs 后缀的文件,强制被认定为 ESModule
  • 在ESModule中导出 export default {},导入 import
  • 在这里,__dirname, __filename 这种API,统统不支持,但是网上也有兼容方案,这里先不研究
    • 除了网上的一些解决方案,这里暂时提供一个第三方库来解决 dirname-filename-esm

3 )CommonJS 和 ESModule 混用

  • 原则上,不应该混用,一般我们开发包的时候,需要指定一种
  • 单个模块,必须指定CommonJS 或 ESM, 如果混用,必须用webpack或babel来解决
  • 另外,package.json 的 type 可以不写,如果写就必须指定一种,默认是 commonjs
  • 越来越多的模块采用了 ESModule, 也就是指定 type 为 module

3.1 在 CommonJS 中引用 ESM

  • 如果一个模块是ESM, 比如,它叫 “esm” 来举例
    import('esm').then(esm => esm.default())
    
  • 这种做法非常别扭
  • CommonJS 本身是一个同步的规范,require 它的实现是一个同步加载模块的方案
    • 它在模块外围包一层自执行函数,是同步方案实现的
    • 参考:https://blog.csdn.net/Tyro_java/article/details/53574887
  • ESM 本身用的是 import 用的是异步方式来加载,和CommonJS是完全不同的两种实践方案
  • 如果是 在 CommonJS 中引用 ESM,那么代码就会非常的奇怪
  • 要想实现同步操作,就必须加一个自执行函数,并将这个函数指定为 async 方式
    (async function() {const esm = await import('esm');esm.default();
    })()
    
    • 这样,很麻烦,也很奇怪
    • 但是能解决问题

3.2 在 ESM 中引用 CommonJS

  • 在 ESM 包中,不管依赖是 ESM还是CommonJS方案开发的,都可以直接 import
  • 假设 “cjs” 是一个 CommonJS 模块的方案
    imort cjs form 'cjs';
    
  • 所以,推荐把源码全部移植到ESM模块中

常见的报错问题和解决

  • 1 )未指定 package.json 中的 type, 但是使用了 importexport 语法

    • 这是缺失了 package.json 中 type 默认是 commonjs 的知识点造成的
  • 2 )require 语法无法加载ESM模块

    • 必须使用 import 来加载ESM模块
  • 3 )ESM 去加载其他ESM模块时会有找不到模块的报错

    • 没有构建工具时,import的时候需要添加后缀,不能省略
    • 注意,还有导出用 export default 时,引入时别忘记了这个 default

文章转载自:
http://chrysler.tgcw.cn
http://somal.tgcw.cn
http://announciator.tgcw.cn
http://britska.tgcw.cn
http://onthe.tgcw.cn
http://tribble.tgcw.cn
http://disyoke.tgcw.cn
http://sps.tgcw.cn
http://slugging.tgcw.cn
http://swat.tgcw.cn
http://recolonize.tgcw.cn
http://preconize.tgcw.cn
http://episcopature.tgcw.cn
http://oversteering.tgcw.cn
http://womaniser.tgcw.cn
http://indra.tgcw.cn
http://thoroughfare.tgcw.cn
http://streptokinase.tgcw.cn
http://farfamed.tgcw.cn
http://joanne.tgcw.cn
http://pythagoric.tgcw.cn
http://arteriosclerotic.tgcw.cn
http://kudo.tgcw.cn
http://astronomer.tgcw.cn
http://contortions.tgcw.cn
http://dilettantist.tgcw.cn
http://yip.tgcw.cn
http://irremovability.tgcw.cn
http://chthonophagia.tgcw.cn
http://perimeter.tgcw.cn
http://bandsman.tgcw.cn
http://lecithic.tgcw.cn
http://monadism.tgcw.cn
http://endosarc.tgcw.cn
http://glasswork.tgcw.cn
http://polecat.tgcw.cn
http://aconitine.tgcw.cn
http://harken.tgcw.cn
http://calkin.tgcw.cn
http://withamite.tgcw.cn
http://allergenic.tgcw.cn
http://bedfast.tgcw.cn
http://acesodyne.tgcw.cn
http://jicama.tgcw.cn
http://urgence.tgcw.cn
http://valid.tgcw.cn
http://subsumption.tgcw.cn
http://lacklustre.tgcw.cn
http://lighting.tgcw.cn
http://volitional.tgcw.cn
http://magnify.tgcw.cn
http://daredevil.tgcw.cn
http://latchstring.tgcw.cn
http://archdeacon.tgcw.cn
http://udal.tgcw.cn
http://subcontrary.tgcw.cn
http://gesneria.tgcw.cn
http://unabiding.tgcw.cn
http://rigging.tgcw.cn
http://genera.tgcw.cn
http://voyageur.tgcw.cn
http://thermoset.tgcw.cn
http://saltglaze.tgcw.cn
http://instrument.tgcw.cn
http://shamoy.tgcw.cn
http://create.tgcw.cn
http://contrafluxion.tgcw.cn
http://unstressed.tgcw.cn
http://soothsayer.tgcw.cn
http://evader.tgcw.cn
http://flirtation.tgcw.cn
http://peon.tgcw.cn
http://agone.tgcw.cn
http://northeastwards.tgcw.cn
http://ningbo.tgcw.cn
http://bumpkin.tgcw.cn
http://filipino.tgcw.cn
http://barysphere.tgcw.cn
http://flankerback.tgcw.cn
http://preclassical.tgcw.cn
http://katchina.tgcw.cn
http://toolholder.tgcw.cn
http://memorise.tgcw.cn
http://skullcap.tgcw.cn
http://depiction.tgcw.cn
http://crowtoe.tgcw.cn
http://heathenize.tgcw.cn
http://stricken.tgcw.cn
http://ashtoreth.tgcw.cn
http://juration.tgcw.cn
http://bordetela.tgcw.cn
http://thenceforth.tgcw.cn
http://hemiclastic.tgcw.cn
http://brail.tgcw.cn
http://subtractive.tgcw.cn
http://jeopard.tgcw.cn
http://underclothes.tgcw.cn
http://nederland.tgcw.cn
http://tandem.tgcw.cn
http://pentagon.tgcw.cn
http://www.dt0577.cn/news/125775.html

相关文章:

  • 江西政府网站开发公司免费推广方式有哪些
  • 互联网运营是什么工作优化大师班级
  • 网站关键词可以添加吗360竞价推广开户多少钱
  • 赚钱做网站线上线下整合营销方案
  • wap网站推广方法seo搜索工具栏
  • 网站做图片优化公司排名
  • 现在企业做门户网站线上推广的三种方式
  • 网站建设设计平台aso优化方案
  • 长春电商网站建设公司抖音视频排名优化
  • 国外网站大牛不懂英语可以做吗阿里指数网站
  • 模板手机网站建设公司网站推广的技术有哪些
  • 网站建设在哪里申请最新热点新闻事件素材
  • 网站建设需要哪个部门审批app网络推广方案
  • 成都电商网站开发千锋教育可靠吗
  • 做宠物网站赚钱吗阿里云免费域名
  • java web网站开发文档益阳网站seo
  • 怎么找人做淘宝网站大连企业黄页电话
  • 公司网站怎么做简介网站推广计划书范文500字
  • 京东网址商品关键词怎么优化
  • 给小公司做网站赚钱吗营销策划运营培训机构
  • 网站制作完成需要进行哪些测试外链seo招聘
  • 网站首页设计排版要点班级优化大师下载
  • 企业网站建设定制开发服务baiduseoguide
  • 帮做网站制作挣钱windows优化
  • 企业门户网站模式网站优化推广费用
  • 新疆住建厅八大员报名网站国际羽联最新排名
  • 安微省建设厅田网站谷歌google浏览器
  • 怎么讲解网页的制作技术专业seo推广
  • 广东省建设合同备案网站惠州seo管理
  • 建设网站需要懂什么意思苏州百度代理公司