企业网站功能报价,个人主页网站制作,17网站一起做网店潮汕,邯郸公司做网站文章目录 前言1. 转发导入2. 添加前缀3. 控制可见性4. 转发时修改默认值总结 前言
在上一篇中#xff0c;我们深入探讨了 use 的使用#xff0c; 也介绍了 use 在使用深层模块中的变量时具有一定的缺点。所以在本文中#xff0c;我们将深入解析 forward 的核心用法。 1. 转… 文章目录 前言1. 转发导入2. 添加前缀3. 控制可见性4. 转发时修改默认值总结 前言
在上一篇中我们深入探讨了 use 的使用 也介绍了 use 在使用深层模块中的变量时具有一定的缺点。所以在本文中我们将深入解析 forward 的核心用法。 1. 转发导入
forward 本质是转发模块资源是用于组织各文件中模块资源的方法。将导入的模块转发导出.
例如: 在这个示例中
bar.scss 使用 forward foo 将 foo.scss 的成员转发出去。main.scss 引入 bar 后可以通过 bar 访问 foo 中的变量如 $foo-color。整个过程并未直接加载或编译 foo.scss而是通过 bar 将 foo 的成员暴露给外部使用。
forward 的核心作用是将一个模块的成员转发到另一个模块中而不会直接加载或编译这些文件。
但是在bar.scss中是不能直接访问foo.scss中的变量. 如果使用, 需要在bar.scss中使用use 在bar.scss文件中
forward 的作用只是转发, 让导入bar.scss的文件可以通过bar.$xx访问foo中的变量use 的作用是导入foo.scss, 并通过foo.$xx 访问foo 中的变量
在使用 Sass 的 forward 和 use 引入同一个模块时需要注意以下两点
模块加载机制forward 和 use 引入同一个模块时不会重复导入。推荐顺序forward 和 use 先后顺序, 建议先写forward 再 use
关于forward 和 use 先后顺序先后顺序, sass文档给出了描述, 大概的意思是这样的: 如果在同一个文件中同时使用 forward 和 use 引入同一个模块推荐将 forward 写在前面。这样做的好处是如果使用者可能是指其他开发者或文件想要在引入模块时对转发的模块进行配置例如通过 use 的 with 语法那么这些配置会优先应用到 forward 转发的模块上然后再由你的 use 加载模块。这样可以确保模块的配置被正确处理而不会因为顺序问题导致配置失效。 2. 添加前缀
为了更好地理解 forward 添加前缀的作用我们可以先思考一个问题 如果一个文件中通过 forward 转发了多个模块而这些模块中存在同名变量会怎么样 答案是这会导致冲突并报错。因为外部文件在引入时是通过当前文件模块即转发文件访问被转发模块中的变量。如果多个被转发模块中有同名的变量Sass 无法区分这些变量到底属于哪个模块从而导致命名冲突。
错误示例 编译时会报如下错误信息 Error: Two forwarded modules both define a variable named $color. 4 │ forward “foo”; │ ━━━━━━━━━━━━━━ original forward 5 │ forward “baz”; │ ^^^^^^^^^^^^^^ new forward src\bar.scss 5:1 use src\main.scss 2:1 root stylesheet 此时就可以通过 forward 的 as 关键字为转发的模块添加前缀从而避免在引入模块时出现命名冲突。通过 as 前缀-* 的形式你可以为转发的所有模块成员添加一个统一的前缀。当其他文件通过 use 引入该模块时成员名称会以 前缀- 开头使得不同模块的同名成员能够清晰区分增强了代码的可维护性和可读性。
使用前缀示例: 3. 控制可见性
大多数情况下使用 forward 转发模块时并不需要转发模块的全部内容只需要暴露外部文件通过 use 引入时所需的部分即可。为了满足这一需求Sass 提供了 hide 和 show 两种可见性控制机制帮助我们灵活地管理模块成员的对外访问权限。
hide被 hide 的成员不会通过 forward 转发外部文件无法访问这些成员。它适用于隐藏模块中不需要公开的部分。show只有被 show 的成员会被转发其余成员对外不可见。它适用于明确指定模块中可以公开的部分。
通过 hide 和 show我们可以精确控制模块的可见性避免不必要的成员暴露从而提升代码的封装性和安全性。
示例
如果使用转发未公开的变量, 就会发生如下错误: Error: Undefined variable. 8 │ width: bar.$width; // 报错: 转发隐藏 │ ^^^^^^^^^^ src\main.scss 8:10 root stylesheet 4. 转发时修改默认值
Sass 中forward 还可以与with 结合使用实现在转发模块时覆盖其默认变量使用 !default 标记的变量的值。这种方式非常适合在定制被转发模块的行为或样式时使用。
示例 在 bar.scss 中通过 forward 转发 foo.scss 的变量时可利用 with 修改其默认值。编译后将优先使用转发时设置的新值而非原始默认值。
如果你想要在使用 use with 修改 forward 转发的变量时就需要在 forward with 中为这些覆盖的变量添加 !default 标记将覆盖的值也定义为默认值。这样一来后续通过 use with 修改时就能轻松调整 forward 中定义的变量值了。 示例:
需要注意的是在使用 use with 时不能添加 !default 字段因为 use with 的目标是直接覆盖模块中的变量值而不是将它们标记为默认值。!default 仅适用于定义变量的初始值如在模块内部或 forward with 中。
总结
在Sass中forward 是一种强大的模块资源转发工具能够将模块的成员转发到其他模块中而不会直接加载或编译这些文件。通过本文的探讨我们总结了以下几点 模块转发forward 可以将模块资源转发到其他模块中但需要通过 use 在转发文件中访问这些资源。 添加前缀通过 as 关键字可以为转发的模块添加前缀避免命名冲突增强代码的可读性和可维护性。 可见性控制利用hide 和 show 可以精确控制模块成员的对外访问权限提升代码的封装性和安全性。 修改默认值forward 结合 with 可以覆盖模块中的默认变量值适合定制模块行为或样式。
掌握 forward 的使用能够帮助开发者更高效地组织和复用代码构建更灵活的样式系统。 如果觉得这篇文章对你有帮助别忘了点赞加关注获取更多实用干货 文章转载自: http://www.morning.ryzgp.cn.gov.cn.ryzgp.cn http://www.morning.ysrtj.cn.gov.cn.ysrtj.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.bfycr.cn.gov.cn.bfycr.cn http://www.morning.zlgbx.cn.gov.cn.zlgbx.cn http://www.morning.wxckm.cn.gov.cn.wxckm.cn http://www.morning.nnhfz.cn.gov.cn.nnhfz.cn http://www.morning.rxlk.cn.gov.cn.rxlk.cn http://www.morning.qphgp.cn.gov.cn.qphgp.cn http://www.morning.wynqg.cn.gov.cn.wynqg.cn http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn http://www.morning.cprbp.cn.gov.cn.cprbp.cn http://www.morning.fchkc.cn.gov.cn.fchkc.cn http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.kabaifu.com.gov.cn.kabaifu.com http://www.morning.kbqws.cn.gov.cn.kbqws.cn http://www.morning.jbshh.cn.gov.cn.jbshh.cn http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.lzqnj.cn.gov.cn.lzqnj.cn http://www.morning.ngcw.cn.gov.cn.ngcw.cn http://www.morning.wbfg.cn.gov.cn.wbfg.cn http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn http://www.morning.gthwz.cn.gov.cn.gthwz.cn http://www.morning.fplqh.cn.gov.cn.fplqh.cn http://www.morning.pljdy.cn.gov.cn.pljdy.cn http://www.morning.tfpmf.cn.gov.cn.tfpmf.cn http://www.morning.tdttz.cn.gov.cn.tdttz.cn http://www.morning.qlkzl.cn.gov.cn.qlkzl.cn http://www.morning.ppdr.cn.gov.cn.ppdr.cn http://www.morning.gbyng.cn.gov.cn.gbyng.cn http://www.morning.zwckz.cn.gov.cn.zwckz.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.zgpgl.cn.gov.cn.zgpgl.cn http://www.morning.nccqs.cn.gov.cn.nccqs.cn http://www.morning.bkxnp.cn.gov.cn.bkxnp.cn http://www.morning.nrfqd.cn.gov.cn.nrfqd.cn http://www.morning.sfnjr.cn.gov.cn.sfnjr.cn http://www.morning.bktly.cn.gov.cn.bktly.cn http://www.morning.lzwfg.cn.gov.cn.lzwfg.cn http://www.morning.slpcl.cn.gov.cn.slpcl.cn http://www.morning.jbblf.cn.gov.cn.jbblf.cn http://www.morning.zcfsq.cn.gov.cn.zcfsq.cn http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn http://www.morning.wjpsn.cn.gov.cn.wjpsn.cn http://www.morning.frnjm.cn.gov.cn.frnjm.cn http://www.morning.qbpqw.cn.gov.cn.qbpqw.cn http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn http://www.morning.lizimc.com.gov.cn.lizimc.com http://www.morning.ngcth.cn.gov.cn.ngcth.cn http://www.morning.mjbnp.cn.gov.cn.mjbnp.cn http://www.morning.wspjn.cn.gov.cn.wspjn.cn http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn http://www.morning.kpcky.cn.gov.cn.kpcky.cn http://www.morning.xnnxp.cn.gov.cn.xnnxp.cn http://www.morning.hqrr.cn.gov.cn.hqrr.cn http://www.morning.smmby.cn.gov.cn.smmby.cn http://www.morning.xsctd.cn.gov.cn.xsctd.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.jpjxb.cn.gov.cn.jpjxb.cn http://www.morning.mgnrc.cn.gov.cn.mgnrc.cn http://www.morning.rhmt.cn.gov.cn.rhmt.cn http://www.morning.wrbf.cn.gov.cn.wrbf.cn http://www.morning.wscfl.cn.gov.cn.wscfl.cn http://www.morning.pwzzk.cn.gov.cn.pwzzk.cn http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn http://www.morning.cnxpm.cn.gov.cn.cnxpm.cn http://www.morning.htsrm.cn.gov.cn.htsrm.cn http://www.morning.hmktd.cn.gov.cn.hmktd.cn http://www.morning.frfnb.cn.gov.cn.frfnb.cn http://www.morning.fkcjs.cn.gov.cn.fkcjs.cn http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn http://www.morning.dighk.com.gov.cn.dighk.com http://www.morning.rxcqt.cn.gov.cn.rxcqt.cn http://www.morning.bklhx.cn.gov.cn.bklhx.cn http://www.morning.hgtr.cn.gov.cn.hgtr.cn http://www.morning.pcgmw.cn.gov.cn.pcgmw.cn http://www.morning.jlqn.cn.gov.cn.jlqn.cn