LWC Open Source

DEX475 - Get Started with Lightning Web Components

📄 第 8 页 🎬 视频课程

课程章节介绍

同学们,咱们今天这一页幻灯片,讲的是 Lightning Web Components 一个很核心的理念——开源和平台差异。听起来有点技术,但其实很好理解,我来给你慢慢拆解。 首先,LWC 是开源的,也就是说,它的源代码是完全公开的。你可以去 GitHub 上看它是怎么写的,甚至自己修改、扩展,然后用在任何你想用的平台上,不只是 Salesforce,你还可以在普通的网页、Node.js 环境里搭建企业级的 Web 组件。这就带来一个很大的好处:以前你开发一个应用,可能后端用 Apex、前端用 Aura,报表又用别的框架,技术栈乱七八糟的。但现在 LWC 统一了,你完全可以用同一套组件模型,既写 Salesforce 平台上的功能,也写外部系统的界面,不再需要来回切换思维。 那开源版本和 Salesforce 平台上的版本到底有什么区别呢?幻灯片里说了——核心引擎是一模一样的,代码逻辑完全相同。真正的区别只在于编译器和运行时的配置。你可以把引擎想象成汽车的发动机,开源版和平台版装的是同一个发动机,只是变速箱调校、安全限速这些不一样。开源版本每周都会发布更新,你能第一时间尝鲜;而平台版本为了保证稳定和安全,会滞后三到六个月,等经过充分测试再上线。 在 Salesforce 平台上运行 LWC 时,还会多出一些安全限制,这完全是出于企业级防护的需要。比如,实验性的 API 是不能用的,那些还在测试中的新功能,平台不会开放,防止你写出不稳定的代码。还有 ESLint 规则会强制执行,保证代码风格统一、规避常见错误。另外,动态导入,也就是那个 `import()` 函数,是被禁止的,因为动态加载可能引入不可控的脚本,带来安全风险。 最典型的安全限制,要数 NPS 和 LWS 安全层施加的隔离。比如你在组件里尝试访问 `this.template.host`,你会发现它返回的是 `null`;去访问子组件的 `shadowRoot` 属性,得到的也是 `null`。这是什么意思呢?其实很简单——LWC 把你的组件包裹在一个封闭的沙箱里,你不可以直接拿到宿主元素的引用,也不能直接穿透别的组件的影子 DOM。这就像每个人都在自己的小房间里工作,互相看不到对方的内部结构,只能通过正式的门(也就是公开的 API 和属性)来交流。这样能防止莫名其妙的代码篡改,让整个应用更健壮、更安全。 所以总结一下,这页幻灯片就是在告诉我们:LWC 既是开放的,让你自由地在任何地方使用;又是受控的,在 Salesforce 平台上通过合理的限制来保障稳定与安全。理解了这一点,你就能更好地把握什么时候该直接写代码,什么时候需要遵守平台的约束。好,这一部分就讲这么多,有问题随时提出来。

关键词

LWC Lightning Web Components Salesforce