javascript 最常应用的场合是 Web 页面,因此,与WEB开发相关的知识,最好要有所了解。
优先级高的相关知识:
1. HTML,这是基本,最好自己能用 记事本 写一些静态的html,来加深印象。
2. DHTML,这是 javascript 编程所要遇到的宿主对象,你要对这个对象进行访问或控制。(加点说明吧,javascript不单能运行在如IE之类的浏览器上,也可以直接在操作系统上运行,还可以在WEB服务器上运行,还可以在。。。,这运行的平台就是宿主,每个宿主有自己的对象。)
3. CSS,样式,这也是必须的。
4. 后台编程语言,特别是一些输出标签,这样,和后台工程师合作就会顺利得多。
5. 美工,这个不是很重要。
6. XML,数据库。这些最好也要有所了解。
7. Flash,了解如何进行通讯就可,不一定用得上。
8. js framwork,网上当前比较流行的javascript框架,如yahoo yui, jquery, prototype。.有很多,大致了解几种,用时再细学,对于应用来说,有个大概就行了。
9. 调试开发工具, 有 eclipse,也有其它专用的,还有 firebug,一个很有名的浏览器(Firefox, google chorm)插件,IE下么有个 devlopment tool,嗯,英文不好,拼错了别怪。
1.按APP的打包与发布方式来分类,APP分为三类:
需要安装的APP,Native App、Hybird App、React App都属于这一类,发布时需要将App打包成可执行程序,然后挂到市场或者网站上,让用户下载安装后才能运行,其功能受限于平台API与权限,但也可以通过一些技巧越过平台API与权限限制,比如Hook技术。
不需要安装的APP,Web App,其实本质上就是个网站,只是做成了和手机APP相仿的样子,发布方式与网站发布相同,用户可以通过浏览器或者微信之类的工具去加载这个网站,其功能相对于手机,受限于浏览器引擎提供对手机本地服务(文件、相机等等)访问的JS接口,通常功能非常少,所以限制较大。
需要用户已经安装某个第三方APP,然后跑在第三方APP上的APP,这类技术安卓上较多(典型的Python程序可以跑在PythonOnAndroid APP上,或者Ruby解释器可以跑Ruby程序),而iOS由于有对这类行为做出过明确限制,上架审核规则里有明确指出,不准APP可以下载源代码从而扩展功能,所以iOS上过去并不存在这样的APP。
2.针对需要安装的APP,APP开发技术有如下分类
基于官方推荐与支持的语言与框架开发的App,安卓目前官方推荐的是Java、Kotlin与C/C++进行开发,iOS目前官方推荐的是Objective-C、Swift与C/C++
基于一些第三方支持的语言和框架开发的App,这类大多是由一些互联网巨头与开源组织维护的,典型的技术有:
Qt(知名的跨平台GUI框架,基于C++,现在随诺基亚倒台被Digia收购与商业化),可以用来开发安卓和iOS,但问题是我有了Java和OC,为啥还要去用Qt C++,是因为太闲或者觉得BUG不够多吗。
Mono,微软.NET框架的开源山寨版,与.NET兼容程度很高,一般使用C#开发,可以用来开发安卓和iOS,性能不佳,C#的开发效率也没比Java和OC高到哪去,还要面对没有官方支持的一堆坑,用他得靠信仰
Node.js,可以使用JS开发然后编译成Native程序,可以用来开发安卓和iOS,但和大部分JS的东西一样,你懂的,JS是一种宗教
Go,Google的高并发系统级语言,原目标是用来替换C,但似乎并不是很美,新的语法似乎还不如老的C,看个人喜好吧,目前有一些第三方写的Android框架,iOS不清楚,没官方支持
Erlang、Ruby、Python,只要能编译二进制程序的框架理论上都能支持安卓和iOS,当然大多不靠谱,有病的可以试一下。
在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论)。
为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些情况下,我们可能更需要同步接口。同步接口的好处在于,首先 js 可以通过返回值得到执行结果;其次,在混合式开发中,app 层导出的某些 api 按照语义就应该是同步的,否则会很奇怪——一个可能在 for 循环中使用的,执行非常快的接口,比如读写某个配置项,设计成异步会很奇怪。
那么如何向 js 层导出同步接口呢?我们知道,在 Android 框架中,通过 WebView.() 这个函数,可以将 java 接口导出到 js 层,并且这样导出的接口是同步接口。但是在 iOS 的 Cocoa 框架中,想导出同步接口却不容易,究其原因,是因为 UIWebView 和 WKWebView 没有 这样的功能。
同时,Android 这个功能爆出过安全漏洞,那么,我们有没有别的方式实现同步调用呢?我们以 iOS UIWebView 为例提供一种实现,WKWebView 和 Android 也可以参考。为了找到问题的关键,我们看一下 iOS 中实现 js 调用 app 的通行方法:首先,自定义 UIWebViewDelegate,在函数 :navigationType: 中拦截请求。
- (BOOL) webView:(UIWebView* _Nonnull):(NSURLRequest* _Nonnull)requestnavigationType:()navigationType {if ([request.HTTPMethod compare:@"GET" options:] != NSOrderedSame) {// 不处理非 get 请求return YES;}NSURL* url = request.URL;if ([url.scheme isEqualToString:@'YourCustomProtocol']) {return [self onMyRequest:request];}return YES;}这种做法实质上就是将函数调用命令转化为 url,通过请求的方式通知 app 层,其中 onMyRequest: 是自定义的 request 响应函数。为了发送请求,js 层要建立一个隐藏的 iframe 元素,每次发送请求时修改 iframe 元素的 src 属性,app 即可拦截到相应请求。
12345678910111213/*** js 向 native 传递消息* @method js_* @memberof JSToNativeIOSPolyfill* @public* @param str {String} 消息字符串,由 HybridMessage 转换而来*/JSToNativeIOSPolyfill.prototype.js_ = function (str) {if (!this.ifr_) {this._prepareIfr();}this.ifr_.src = 'YourCustomProtocol://__message_send__?msg=' + encodeURIComponent(str); }当 app 执行完 js 调用的功能,执行结果无法直接返回,为了返回结果,普遍采用回调函数方式——js 层记录一个 callback,app 通过 UIWebView 的 函数调用这个 callback(类似 jsonp 的机制)。注意,这样封装的接口,天然是异步接口。
因为 js_ 这个函数会立即返回,不会等到执行结果发回来。所以,我们要想办法把 js 代码“阻塞”住。
请回忆一下,js 中是用什么方法能把 UI 线程代码“阻塞”住,同时又不跑满 CPU?1234var async = false;var url = '网页 10.requst对象方法 .获取客户ip地址:request.ip .获取上传的文件:request.files 11.启动脚本package.json package.json用于指定app信息,nodejs版本号和其他组件的依赖关系 { "name": "demo", "description": "my first express app", "version": "0.0.1", "dependencies": { "express": "3.x" } } 12.app入口app.js app.js主要包含文件请求时,服务器端就到public目录寻找这个文件 如:<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">, 服务器端就到public/bootstrap/css/目录中寻找bootstrap.css文件。
android怎样调用js文件里面的方法
如果多个线程同时访问一个集合,而其中至少一个线程修改了该集合,那么它必须 保持外部同步。这通常是通过对自然封装该集合的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来“包装”集合。最好在创建时完成这一操作,以防止对 HashSet 实例进行意外的不同步访问:
Set s = Collections.synchronizedSet(new HashSet(。));
Angular目前比较大, 100+K,内嵌还勉强,如果远端页面就有点大了。
我们的应用场景比较特殊,和Native交互非常多, 架构模式也不是单页面应用,而是一个页面一个WebView,所以很多angular的特性用不到。很多页面,业务形态很简单,只是简单的展示,用angular的绑定大材小用。
不支持服务端渲染。在某些奇葩机型上, #hash识别会出问题,导致WebView 404, 要hack。
优点:在我接手之前,整个项目是无架构模式,没有任何复用性。接手后,迅速用angular架构起框架, 移植代码,把底层逻辑封装完成开发人员业务层的代码非常之简单,开发效率高在这过程中, 学习了angular的很多理念,让团队在AOP单元测试,组件化等方面的有不错的认知。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.222秒