Swift 将许多具有相互依赖关系的javascript文件加载到JavaScriptCore上下文中
下面的问答说明了如何将单个Swift 将许多具有相互依赖关系的javascript文件加载到JavaScriptCore上下文中,swift,javascriptcore,Swift,Javascriptcore,下面的问答说明了如何将单个javascript文件加载到JavaScriptCore: 如果有很多javascript文件并且它们之间有相互依赖关系,该怎么办:它们是否可以按与依赖关系相反的顺序加载并期望正确解析 utils.js file1NeedingUtils.js file2NeedingFile1.js 那么: func analyzeText(jsContext: JSContext, scriptName: String) { var ext = scriptName.pa
javascript
文件加载到JavaScriptCore
:
如果有很多javascript文件并且它们之间有相互依赖关系,该怎么办:它们是否可以按与依赖关系相反的顺序加载并期望正确解析
utils.js
file1NeedingUtils.js
file2NeedingFile1.js
func analyzeText(jsContext: JSContext, scriptName: String) {
var ext = scriptName.pathExtension
var fileName = scriptName.substringToIndex(
advance(scriptName.startIndex,
scriptName.utf16Count - ext.utf16Count - 1))
if fileExtension.utf16Count == 0 {
fileName = scriptName
ext = "js"
}
let url = NSBundle.mainBundle()
.URLForResource(fileName, withExtension: ext)
let scriptCode = String(contentsOfURL: url!,
encoding: NSUTF8StringEncoding,
error: nil)!
jsContext.evaluateScript(scriptCode)
}
var jsCtx = JSContext(virtualMachine: JSVirtualMachine())
["utils.js","file1NeedingUtils.js","file2NeedingFile1.js"]
.forEach( x in analyzeScript(jsCtx, x))
请注意,我们在所有调用中共享相同的JSContext
该功能通常是浏览器要处理的领域。我计划走这条路线,但我想知道是否可能会有问题。此外,是否对流程进行了有帮助的优化
func analyzeText(jsContext: JSContext, scriptName: String) {
var ext = scriptName.pathExtension
var fileName = scriptName.substringToIndex(
advance(scriptName.startIndex,
scriptName.utf16Count - ext.utf16Count - 1))
if fileExtension.utf16Count == 0 {
fileName = scriptName
ext = "js"
}
let url = NSBundle.mainBundle()
.URLForResource(fileName, withExtension: ext)
let scriptCode = String(contentsOfURL: url!,
encoding: NSUTF8StringEncoding,
error: nil)!
jsContext.evaluateScript(scriptCode)
}
var jsCtx = JSContext(virtualMachine: JSVirtualMachine())
["utils.js","file1NeedingUtils.js","file2NeedingFile1.js"]
.forEach( x in analyzeScript(jsCtx, x))