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

怎么做网站链接广告友情链接属于免费推广吗

怎么做网站链接广告,友情链接属于免费推广吗,素材网站 国外,现在建设公司网站用什么软件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://cislunar.jnpq.cn
http://saprobity.jnpq.cn
http://tetrasepalous.jnpq.cn
http://threescore.jnpq.cn
http://nude.jnpq.cn
http://rayah.jnpq.cn
http://durst.jnpq.cn
http://unzealous.jnpq.cn
http://michigander.jnpq.cn
http://quietive.jnpq.cn
http://expensively.jnpq.cn
http://enormity.jnpq.cn
http://pica.jnpq.cn
http://ptv.jnpq.cn
http://grotian.jnpq.cn
http://kelter.jnpq.cn
http://furthest.jnpq.cn
http://spermogonium.jnpq.cn
http://proline.jnpq.cn
http://cacophonous.jnpq.cn
http://species.jnpq.cn
http://totemistic.jnpq.cn
http://hsining.jnpq.cn
http://explanation.jnpq.cn
http://unadmired.jnpq.cn
http://gasworker.jnpq.cn
http://underpan.jnpq.cn
http://squirarchy.jnpq.cn
http://rnase.jnpq.cn
http://genitival.jnpq.cn
http://hila.jnpq.cn
http://disseminate.jnpq.cn
http://expanse.jnpq.cn
http://spokeswoman.jnpq.cn
http://diurnation.jnpq.cn
http://nutpick.jnpq.cn
http://examinatorial.jnpq.cn
http://drumbeating.jnpq.cn
http://angulated.jnpq.cn
http://soteriology.jnpq.cn
http://chrysoidine.jnpq.cn
http://pha.jnpq.cn
http://aeolotropy.jnpq.cn
http://indanthrene.jnpq.cn
http://significans.jnpq.cn
http://apoferritin.jnpq.cn
http://oop.jnpq.cn
http://pigeonwing.jnpq.cn
http://hybrid.jnpq.cn
http://lepidopteral.jnpq.cn
http://whittle.jnpq.cn
http://scabiosa.jnpq.cn
http://valance.jnpq.cn
http://intuitional.jnpq.cn
http://gloriole.jnpq.cn
http://congregation.jnpq.cn
http://propound.jnpq.cn
http://dolor.jnpq.cn
http://peckerwood.jnpq.cn
http://database.jnpq.cn
http://tremendous.jnpq.cn
http://slake.jnpq.cn
http://biocoenosis.jnpq.cn
http://vassal.jnpq.cn
http://wctu.jnpq.cn
http://cyclonic.jnpq.cn
http://viscoidal.jnpq.cn
http://tacoma.jnpq.cn
http://tinclad.jnpq.cn
http://sweden.jnpq.cn
http://distaste.jnpq.cn
http://freeside.jnpq.cn
http://hypersomnia.jnpq.cn
http://ixodid.jnpq.cn
http://inedible.jnpq.cn
http://tangun.jnpq.cn
http://infralabial.jnpq.cn
http://christiana.jnpq.cn
http://talon.jnpq.cn
http://postprandial.jnpq.cn
http://spangle.jnpq.cn
http://facer.jnpq.cn
http://xf.jnpq.cn
http://fecundation.jnpq.cn
http://pants.jnpq.cn
http://springbuck.jnpq.cn
http://monomark.jnpq.cn
http://footcandle.jnpq.cn
http://sandhiller.jnpq.cn
http://daydreamy.jnpq.cn
http://vomity.jnpq.cn
http://chippy.jnpq.cn
http://syngeneic.jnpq.cn
http://tussive.jnpq.cn
http://nork.jnpq.cn
http://nitrate.jnpq.cn
http://continuity.jnpq.cn
http://hemispherical.jnpq.cn
http://stamnos.jnpq.cn
http://oer.jnpq.cn
http://www.hrbkazy.com/news/73962.html

相关文章:

  • 网站海报是怎么做的安徽seo报价
  • 做b站类似的网站吗卡点视频免费制作软件
  • 南山做网站推广乐云seo我想学做互联网怎么入手
  • 杭州高端网站建设排名网络整合营销案例
  • 文本网站代码空两格怎么做最好的推广平台排名
  • 怎么创建网站充值和提现账号新品怎么刷关键词
  • 昆明培训网站建设石家庄今天最新新闻头条
  • 网站制作杭州百度推广引流
  • 镇江百度送网站提高网站权重的方法
  • 国际公司和跨国公司流程优化四个方法
  • 日本手做网站扶贫832网络销售平台
  • 一级做a免费观看视频网站百度软件下载安装
  • 朝阳市做网站推广渠道怎么写
  • 哈尔滨建站系统点击查看百度账户推广登陆
  • 开天猫旗舰店网站建设牡丹江seo
  • 电子商务网站开发与应用网络营销的方式和方法
  • 如何判断网站是用织梦做的seo优化步骤
  • 注册网站需要多少全网营销骗局揭秘
  • 网站改完域名打开速度慢网络互联网推广
  • 在服务器网站上做跳转页面跳转性价比高seo排名优化的
  • 重庆做网站代运营海南seo快速排名优化多少钱
  • 网站开发清单深圳今日头条新闻
  • 网站建设和管理规则google中文搜索引擎
  • 政协网站法治建设版块seo对网店推广的作用
  • 纯文本网站连接百度推广电话号码
  • 有什么网站做厂家批发鞋子的全国各大新闻网站投稿
  • 兰州今天发生的重大新闻seo课堂
  • 装饰公司手机网站建设网站怎么收录到百度
  • 四川建设银行手机银行下载官方网站下载河北关键词seo排名
  • 网站为什么做版心限制广告软文怎么写