在Nicholas Zakas和Addy Osmani的这些会谈中,他们讨论了在构建大规模Javascript应用程序时使用Facade模式作为沙箱的想法,以便将应用程序与底层基础库分离.
理论上,这种解耦可以让您在不需要重写应用程序模块的情况下切换出基础库.然而,在实践中,这似乎更难以实施.
这个提出的架构有具体实现,例如AuraJS.然而,通过查看源代码,沙盒似乎仍然通过从其某些方法返回jQuery对象而具有泄漏抽象.
我并不特别关注AuraJS,但更多的是尝试抽象像jQuery这样的库而不会失去太多功能的一般概念.
举个例子,假设我的facade/sandbox有一个dom方法.find(selector).我可以想到它可能会返回的3个选项:
一个jQuery对象 - 这会将jQuery泄漏到消费模块中.
一个原始的dom元素 - 功能丧失,没有人真的想用这个!没有链接.
一个类似jQuery的自定义包装器 - 可能非常复杂,但似乎是理想的解决方案.
所以我的问题是,如何在不丢失太多功能的情况下抽象像jQuery这样的库,这样可以在未来的某些时候以最小的努力替换它?
尝试使用骨干光环构建Web客户端应用程序.努力将路由器添加到应用程序中.有没有人尝试添加路由器到骨干光环呢?
您好,在我的光环组件中,下面的代码用于将所有重音字符替换为英语等效字符,但我更新了光环组件版本,之后不再支持 String.prototype 函数,请帮助其替代方案如何替换所有重音字符
\nvar input = component.get('v.newSalesOrder.Invoice_Message__c');\n \n /* var languageMap = component.get("v.languageMap");\n \n String.prototype.portuguese=function(){\n return this.replace(/[^A-Za-z0-9\\[\\] ]/g,\n function(a){\n return languageMap.portuguese_map[a]||a}\n )\n };\n component.set('v.newSalesOrder.Invoice_Message__c', input.portugueze()); \n\nvar languageMap = component.get("v.languageMap");\n \n languageMap.portuguese_map={\n "\xc3\x81":"A", "\xc3\xa1":"a", "\xc3\x82":"A", "\xc3\xa2":"a", "\xc3\x80":"A", "\xc3\xa0":"a", "\xc3\x85":"A", "\xc3\xa5":"a", "\xc3\x83":"A", "\xc3\xa3":"a",\n "\xc3\x84":"A", "\xc3\xa4":"a", "\xc3\x86":" ", "\xc3\xa6":" ", "\xc3\x89":"E", "\xc3\xa9":"e", "\xc3\x8a":"E", "\xc3\xaa":"e", "\xc3\x88":"E", "\xc3\xa8":"e",\n "\xc3\x8b":"E", "\xc3\xab":"e", "\xc3\x90":" ", "\xc3\xb0":" ", "\xc3\x8d":"I", "\xc3\xad":"i", "\xc3\x8e":"I", "\xc3\xae":"i", "\xc3\x8c":"I", "\xc3\xac":"i",\n "\xc3\x8f":"I", "\xc3\xaf":"i", "\xc3\x93":"O", "\xc3\xb3":"o", "\xc3\x94":"O", "\xc3\xb4":"o", "\xc3\x92":"O", "\xc3\xb2":"o", "\xc3\x98":" ", "\xc3\xb8":" ",\n "\xc3\x95":"O", "\xc3\xb5":"o", …Run Code Online (Sandbox Code Playgroud)