为什么不直接使用js与后台交互,而使用jsp等技术?

JavaScript013

为什么不直接使用js与后台交互,而使用jsp等技术?,第1张

前端与后台是两个不同的运行环境,所要面对和处理的问题是完全不同的,比如前端脚本主要是用来处理页面与浏览者之间的交互的,而后台脚本则是根据前端的要求读取数据库并返回数据给前端,如果一种程序语言既要兼顾前端又要兼顾后台,那么它必然会很臃肿,会影响运行效率。nodejs虽然使用的语法是JavaScript,但它本质上与前端的JavaScript还是不同的,它其实跟asp、jsp、php一样是运行在服务器的(浏览器查看源代码是看不到nodejs代码的),只不过语法是js而已。

退一万步讲,即使JavaScript能实现前后端统一,在实际应用中它仍然要分为泾渭分明的前端和后台两部分,服务器会首先执行后台部分的代码,然后把前端代码(包含html+css+前端js)发送给客户端浏览器,浏览器在渲染页面效果的同时解析执行前端js。这样的话,前后端都用js与前后端用不同的语言或系统又有什么本质区别呢?更何况实际开发中前端和后台是由不同的人(或团队)来进行的,这种情况下又怎么能强求两者的一致呢?

再一个就是安全问题,如果前端js可以直接操作后台,那么很多后台的秘密(不单单是密码)就会直接暴露在全世界所有人的眼皮下,这是一件很恐怖的事,堪比世界末日!

由于UIWebview即将废弃,相比较于WKWebview,通过测试即可发现UIWebview占用更多内存,且内存很夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多。下面列举一些其它的优势:

WKScriptMessageHandler是因为我们要处理JS调用OC方法的请求。

WKScriptMessage有两个关键属性name 和 body。

因为我们给每一个OC 方法取了一个name,那么我们就可以根据name 来区分执行不同的方法。body 中存着JS 要给OC 传的参数。

ocAddAction方法在js文件中并没有定义

实现WKNavigationDelegate协议方法,执行之后会在WKScriptMessageHandler代理方法中拦截到 ocZRAction

动态修改alert系统函数的实现,当js中调用alert函数时,触发的是我们自定义方法

URL Scheme拦截的问题,这里不做赘述,请看 demo

JS注入详情

参考链接:

链接一

链接二