小程序开发文档w3c(小程序开发文档湖南岚鸿)

小程序开发 1569
本篇文章给大家谈谈小程序开发文档w3c,以及小程序开发文档湖南岚鸿对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、RSS/XML/WRP分别是什么意思?

本篇文章给大家谈谈小程序开发文档w3c,以及小程序开发文档湖南岚鸿对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

RSS/XML/WRP分别是什么意思?

RSS(也叫聚合内容,Really Simple Syndication)是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。个人认为,它就是资源共享模式的延伸。

RSS是一种起源于网景的推技术,将订户订阅的内容传送给他们的通讯协同格式(Protocol)。RSS可以是以下三个解释的其中一个:

Really Simple Syndication

RDF (Resource Description Framework) Site Summary

Rich Site Summary

但其实这三个解释都是指同一种Syndication的技术。 RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0。

更多有关RSS

今天肯定有人还记得IE 4刚刚推出来的时候有一个有趣的功能,那就是新闻频道。这个新闻频道的功能与Netscape推出的新闻频道是很相似的(当时Netscape还是市场上领先的浏览器)。为此Netscape 定义了一套描述新闻频道的语言,这就是RSS,只不过Netscape自当时起每况愈下,所以最终也没有发布一个正式的RSS规范(只发布了一个0.9版本)。而微软也在当时推出了支持自己IE的CDF(Channel Definition Format)数据规格,与RSS非常接近。微软试图用新闻频道的功能把“推”(Push)技术变成一个应用主流,并与Netscape抗衡。不过出乎预测的是,“推”技术自始至终没有找到合适的商业模型,而且伴随着其他各类网络特性的出现,也日益无法显现自身的优势。新闻频道在浏览器中的地位最终日暮西山,最后也在IE的后续版本中消失了。

新闻频道的确进入了低谷,但是RSS并没有被业界人士所抛弃。过去两年,Blog从一个专业群体开始,逐步成为了网络上最热门的新话题。而RSS成为了描述Blog主题和更新信息的最基本方法。于是RSS这项技术被著名Blogger/Geek戴夫·温那(Dave Winner)的公司UserLand所接手,继续开发新的版本,以适应新的网络应用需要。新的网络应用就是Blog,因为戴夫·温那的努力,RSS升级到了0.91版,然后达到了0.92版,随后在各种Blog工具中得到了应用,并被众多的专业新闻站点所支持。在广泛的应用过程中,众多的专业人士认识到需要组织起来,把RSS发展成为一个通用的规范,并进一步标准化。一个联合小组根据W3C新一代的语义网技术RDF对RSS进行了重新定义,发布了RSS 1.0,并把RSS定义为“RDF Site Summary”。这项工作并没有与戴夫·温那进行有效的沟通,而戴夫则坚持在自己设想的方向上进一步开发RSS的后续版本,也并不承认RSS 1.0的有效性。RSS由此开始分化形成了RSS 0.9x/2.0和RSS 1.0两个阵营,也由此引起了在专业人群中的广泛争论。

因为有着争论的存在,所以一直到今天,RSS 1.0还没有成为标准化组织的真正标准。而戴夫·温那却在2002年9月独自把RSS升级到了2.0版本,其中的定义完全是全新的模式,并没有任何RSS 1.0的影子。这引发了网络上进一步争议,究竟让一个越来越普及的数据格式成为一个开放的标准,还是被一家公司所定义和控制,成为了争议的焦点。戴夫·温那并没有为自己辩解,他的观点是RSS还需要进一步发展,需要专业人士更明确的定义,不过恐怕这种轻描淡写不能消除人们对RSS“被一家商业公司独占”的担心。

前面的铺垫对用户来说也许没有什么太大的意义,可能更多人关心如何在自己的Blog增加RSS输出,这样可以让很多新闻聚合工具(例如CNBlog刚刚推荐的NewzCrawler)很容易找到你并自动获得你在Blog中的更新内容。

它有什么用处:让别人容易的发现你已经更新了你的站点,让人们很容易的追踪他们阅读的所有weblogs。

不久,一家专门从事Blog软件开发的公司UserLand接手了RSS 0.91版本,并把它作为其Blog软件的基础功能之一继续开发,逐步推出了0.92、0.93和0.94版本。随着Blog的流行,RSS作为一种基本的功能也被越来越多的网站和Blog软件支持。

在UserLand公司接手并不断开发RSS的同时,很多的专业人士认识到需要通过一个第三方、非商业的组织,把RSS发展成为一个通用的规范,并进一步标准化。于是2001年一个联合小组在0.90版本RSS的开发原则下,以W3C新一代的语义网技术RDF(Resource Description Framework)为基础,对RSS进行了重新定义,发布RSS1.0,并将RSS定义为“RDF Site Summary”。但是这项工作没有与UserLand公司进行有效的沟通,UserLand公司也不承认RSS 1.0的有效性,并坚持按照自己的设想进一步开发出RSS的后续版本,到2002年9月发布了最新版本RSS 2.0,UserLand公司将RSS定义为“Really Simple Syndication”。

目前RSS已经分化为RSS 0.9x/2.0和RSS 1.0两个阵营,由于分歧的存在和RSS 0.9x/2.0的广泛应用现状,RSS 1.0还没有成为标准化组织的真正标准。

RSS可以干什么

1.订阅BLOG(你可以订阅你工作中所需的技术文章;也可以订阅与你有共同爱好的作者的Blog,总之,你对什么感兴趣你就可以订什么)

2.订阅新闻(无论是奇闻怪事、明星消息、体坛风云,只要你想知道的,都可以订阅)

你再也不用一个网站一个网站,一个网页一个网页去逛了。只要这将你需要的内容订阅在一个RSS阅读器中,这些内容就会自动出现你的阅读器里,你也不必为了一个急切想知道的消息而不断的刷新网页,因为一旦有了更新,RSS阅读器就会自己通知你!

RSS阅读器

目前,RSS阅读器基本可以分为三类。

第一类大多数阅读器是运行在计算机桌面上的应用程序,通过所订阅网站的新闻供应,可自动、定时地更新新闻标题。在该类阅读器中,有Awasu、FeedDemon和RSSReader这三款流行的阅读器,都提供免费试用版和付费高级版。国内最近也推出了几款RSS阅读器:周博通,看天下,博阅。另外,开源社区也推出了很多优秀的阅读器,RSSOWl(完全java开发,点击下载)它不仅是完全支持中文界面,而且还是完全的免费软件!(后面我们就将以开源软件周博通和rssowl为例,为大家介绍怎样来使用RSS阅读器-周伯通,怎样使用RSS阅读器-rssowl))

第二类新闻阅读器通常是内嵌于已在计算机中运行的应用程序中。例如,NewsGator内嵌在微软的Outlook中,所订阅的新闻标题位于Outlook的收件箱文件夹中。另外,Pluck内嵌在Internet Explorer浏览器中!

第三类则是在线的WEB RSS阅读器,比如国内的 鲜果RSS阅读器。此类在线RSS阅读器的好处就是不需要安装任何软件就可以获得RSS阅读的便利,并且可以保存阅读状态,推荐和收藏自己感兴趣的文章。

RSS的联合(Syndication)和聚合(Aggregation)

发布一个RSS文件(RSS Feed)后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,如PDA、手机、邮件列表等。而且一个网站联盟(比如专门讨论旅游的网站系列)也能通过互相调用彼此的RSS Feed,自动的显示网站联盟中其他站点上的最新信息,这就叫着RSS的联合。这种联合就导致一个站点的内容更新越及时、RSS Feed被调用的越多,该站点的知名度就会越高,从而形成一种良性循环。

而所谓RSS聚合,就是通过软件工具的方法从网络上搜集各种RSS Feed并在一个界面中提供给读者进行阅读。这些软件可以是在线的WEB工具,如,,,, ,,, 等,当然,可以使用我们以上提到的客户端工具。

RSS的未来发展

随着越来越多的站点对RSS的支持,RSS已经成为目前最成功的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。相信很快我们就会看到大量基于RSS的专业门户、聚合站点和更精确的搜索引擎。

RSS的语法介绍

一个RSS文件就是一段规范的XML数据,该文件一般以rss,xml或者rdf作为后缀。下面我们选择中的一部分作为例子简单说(略)

RSS是在线共享内容的一种简易方式(也叫聚合内容,Really Simple Syndication)。通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。

网络用户可以在客户端借助于支持RSS的新闻聚合工具软件(例如SharpReader,NewzCrawler、FeedDemon),在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。

XML是eXtensible Markup Language的缩写。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。

XML的前身是SGML(The Standard Generalized Markup Language),是自IBM从60年代就开始发展的GML(Generalized Markup Language)

同HTML一样, XML (可扩展标识语言)是通用标识语言标准(SGML)的一个子集,它是描述网络上的数据内容和结构的标准。尽管如此,XML不象HTML,HTML仅仅提供了在页面上显示信息的通用方法(没有上下文相关和动态功能) ,XML则对数据赋予上下文相关功能,它继承了SGML的大部分功能,却使用了不太复杂的技术。.

为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。

因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 ()。因为XML 是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言

XML(可扩展标记语言)是从称为SGML(标准通用标记语言)的更加古老的语言派生出来的。SGML的主要目的是定义使用标签来表示数据的标记语言的语法。

标签由包围在一个小于号()和一个大于号()之间的文本组成,例如tag。起始标签(start tag)表示一个特定区域的开始,例如start;结束标签(end tag)定义了一个区域的结束,除了在小于号之后紧跟着一个斜线(/)外,和起始标签基本一样,例如/end。SGML还定义了标签的特性(attribute),它们是定义在小于号和大于号之间的值,例如img src="picture.jpg"中的src特性。如果你觉得它看起来很熟悉的话,应该知道,基于SGML的语言的最著名实现就是原始的HTML。

SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:

1 某些起始标签不允许出现结束标签,例如HTML中img标签。包含了结束标签就会出现错误。

2 某些起始标签可以选择性出现结束标签或者隐含了结束标签,例如HTML中p标签,当出现另一个p标签或者某些其他标签时,便假设在这之前有一个结束标签。

3 某些起始标签要求必须出现结束标签,例如HTML中script标签。

4 标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,bThis is a i sample /b string/i是正确的。

5 某些特性要求必须包含值,例如img src="picture.jpg"中的src特性。

6 某些特性不要求一定有值,例如td nowrap中的nowrap特性。

7 定义特性的两边有没有加上双引号都是可以的,所以img src="picture.jpg"和img src=picture.jpg都是允许的。

这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。

XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:

8 任何的起始标签都必须有一个结束标签。

9 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如tag /。XML解析器会将其翻译成tag/tag。

10 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如bthis is a isample/i string/b。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。

11 所有的特性都必须有值。

12 所有的特性都必须在值的周围加上双引号。

这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。

如果需要关于SGML和XML具体技术上的对比,请查看W3C的注解,位于:. org/TR/NOTE-sgml-xml.html

如今,XML已经是世界上发展最快的技术之一。它的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。这里是一个XML文件的例子:

每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,?xml version="1.0"?。这一行代码会告诉解析器和浏览器,这个文件应该按照前面讨论过的XML规则进行解析。第二行代码,books,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。

范例文件中的第三行代码是注释,你会发现它与HTML中使用的注释风格是一样的。这是XML从SGML中继承的语法元素之一。

页面再往下的一些地方,可以发现desc标签里有一些特殊的语法。![CDATA[ ]]代码用于表示无需进行解析的文本,允许诸如大于号和小于号之类的特殊字符包含在文本中,而无需担心破坏XML的语法。文本必须出现在![CDATA[和]]之间才能合适地避免被解析。这样的文本称为Character Data Section,简称CData Section。

下面的一行就是在第二本书的定义之前的:

?page render multiple authors ?

虽然它看上去很像XML序言,但实际上是一种称为处理指令(processing instruction)的不同类型的语法。处理指令(以下简称PI)的目的是为了给处理页面的程序(例如XML解析器)提供额外的信息。PI通常情况下是没有固定格式的,唯一的要求是紧随第一个问号必须至少有一个字母。在此之后,PI可以包含除了小于号和大于号之外的任何字符串序列。

最常见的PI是用来指定XML文件的样式表:

这个PI一般会直接放在XML序言之后,通常由Web浏览器使用,来将XML数据以特殊的样式显示出来。

WRP是用自带工具打开的文件.

小程序如何写个10秒倒计时然后弹出提示框

1、首先打开小程序开发工具新建一个小程序。

2、接着编写wxml中的倒计时页面样式,如下图所示。

3、然后定义倒计时需要用到的变量,如下图所示,其中结束时间大多数都是从后台获取的。

4、接着编写倒计时函数,如下图所示,这里主要用到了定时器的功能,如下图所示。

5、接下来在需要调用的地方调用倒计时函数即可,一般都是在结束时间获得以后调用。

6、最后就可以看到页面中出现了倒计时效果了,如下图所示。

小程序开发用什么语言

小程序开发常见使用的是“MINA”框架;

这个框架为小程序的运行提供了丰富的组件和API,要学会和掌握小程序的框架结构、数据绑定机制、模板、数据缓存、常用组件和API等相关知识。

Apache Mina Server 是一个网络通信应用框架,主要是对基于TCP/IP、UDP/IP协议站的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助大家快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步操作的编程模型,提供了全功能的网络应用程序框架。

taro 怎么集成 android sdk?

【CSDN 编者按】小程序这个由微信带头的产物,格外鲜明地体现了移动互联网的「时机」这个词,早在微信小程序之前,有力推轻应用的百度,有来自 HTML5 中国产业联盟的 DCloud 所主张的流应用,但最终却都已经淹没在了移动互联网的历史长河之中。唯有微信小程序风生水起,更是带动了巨头们的争相入场。

小程序迎来了专属于中国移动互联网的群雄逐鹿的时代。

本文作者王安即是流应用的创造者,作为移动领域的老兵,他依然在矢志不移地构建移动开发工具框架及生态,从原生应用到 HTML5 再到如今的小程序,他是这段历史的见证者、参与者。从这篇文章中,我们能够鲜活地看到小程序的技术演进历程,以及对于所有开发者来说,终将去往何处。

作者 | 王安

责编 | 唐小引

封图 | CSDN 付费下载自东方 IC

出品 | CSDN(ID:CSDNnews)

中国特色的移动互联网时代

伴随着QQ 小程序面向用户开放,这个手机端月活 7 亿的巨无霸正式入场。小程序,终于成为了超级 App 的标配。

盘点下已经支持小程序的超级 App:

微信、企业微信、QQ、支付宝、高德地图、手机淘宝、百度、百度贴吧、百度地图、今日头条、抖音……

这些璀璨耀眼的名字,背后都是巨大的流量。

在这群超级 App 的支持下,中国的移动互联网格局被彻底改变。

这个有中国特色的移动互联网时代,被称为“小程序时代”。

这是继手机支付后,中国的移动互联网领先世界的第二个代表事物。

中国的技术标准、开发者生态,第一次得到大规模的普及应用,而且很明显,小程序在功能和体验上均超过了 HTML5。

中国人能建立开发者生态吗?这个命题曾一度让人怀疑。

小程序完成了这一步突破,这是一场值得歌颂的中国技术生态发展史。

让我们来回顾下这场技术生态革命,是如何开始,又将要去向何方。

罗马不是一天建成的

小程序不是一天发明出来的

HTML5 于 2007 年在 W3C 立项,与 iPhone 发布同年。

乔布斯曾期待 HTML5 能帮助 iPhone 打造起应用生态系统。

但 HTML5 的发展速度并不如预期,它虽然成功地实现了打破 IE+Flash 垄断局面的目标,却没有达到承载优秀的移动互联网体验的地步。

于是在 iPhone 站稳脚跟后,发布了自己的 App Store,开启了移动互联网的原生应用时代。

随后的 Android,本来是基于 Linux 的 OS,与之同期的 MeeGo 等竞争对手采用 C + HTML5 的双模应用生态策略,然而 C 的开发难度太大,HTML5 体验又不行。Android 依靠 Java 技术生态,在竞争中脱颖而出。

于是在移动互联网初期,应用生态被定了基调 —— 原生开发。

在那个时候,硬件不行,也没有其他办法,原生开发才能在低配硬件上带来商用体验。

但大家都在怀念 HTML,那种无需安装更新、即点即用,直达二级页面的特点,一直让人迷恋。

图源:CSDN 付费下载自东方 IC

国内有一批做浏览器的厂商,尝试去改进 HTML5,他们提出了轻应用的概念。

通过给 WebView 扩展原生能力,补充 JS API,让 HTML5 应用可以实现更多功能。

不过这类业务没有取得成功,HTML5 的问题不止是功能不足,性能体验是它更严重的问题,而体验问题,不是简单地扩展 JS 能力能搞定的。

这类业务发展的顶峰,是微信的 JS SDK。

作为国内事实上最大的手机浏览器,微信为它的浏览器内核扩充了大量 JS API,让开发者可以用 JS 调用微信支付、扫码等众多 HTML5 做不到的功能。

微信 JS SDK 说明文档

但微信团队对这套方案的体验仍然不满意,微信钱包栏目里打车、理财等很多应用虽然嵌入了 JS SDK,但每次点击要等半天白屏,让人用着很痛苦,他们在业内开始寻找新的解决方案。

业内早有专业团队看到了相同的问题。

与浏览器不同,Hybrid 应用是另一个细分领域。它们为开发者提供使用 JS 编写跨平台应用的工具,为了让 JS 应用更接近原生应用的功能体验,这个行业的从业者做出了很多尝试。

笔者所在的 DCloud 即是其中之一,我们提出了改进 HTML5 的“性工能”障碍的解决方案 —— 通过工具、引擎优化、开发模式调整,让开发者可以通过 JS 写出更接近原生 App 体验的应用。

多 WebView 模式,原生接管转场动画、下拉刷新、Tab 分页,预载 WebView……各种优化技术不停迭代,终于让 Hybrid 应用取得了性能体验的突破。

Hybrid 应用和普通的轻应用相比,还有一个巨大的差别:一个是 Client/Server,一个是 Browser/Server。简单来说,Hybrid 应用是 JS 编写的需要安装的 App,而轻应用是在线网页。

C/S 的应用在每次页面加载时,仅需要联网获取 JSON 数据;而 B/S 应用除了 JSON 数据外,还需要每次从服务器加载页面 DOM、样式、逻辑代码,所以 B/S 应用的页面加载很慢,体验很差。

可是这样的 C/S 应用虽然体验好,却失去了 HTML5 的动态性,仍然需要安装、更新,无法即点即用、直达二级页面。

那么 C/S 应用的动态性是否可以解决呢?对此,我们提出了流应用概念,把之前 Hybrid 应用里的运行于客户端的 JS 代码,先打包发布到服务器,制定流式加载协议,手机端引擎动态下载这些 JS 代码到本地,并且为了第一次加载速度更快,实现了应用的边下载边运行。

就像流媒体的边下边播一样,应用也可以实现边用边下。

在这套方案的保障下,终于解决了之前的各种难题:让 JS 应用功能体验达到原生,并且可即点即用、可直达二级页面。

如今看来,这已经变成了常识。但在当年,先驱们做了无数艰辛探索。

这套技术,需要让客户端引擎提前预置在手机上,就像流媒体的普及,建立在 Flash 的装机量巨大的基础上,那么普及这个客户端引擎就变得很重要。

2015 年,360 和 DCloud 合作,在 360 手机助手里内嵌了这个客户端引擎,推出了业内第一个商用的小程序,360 称之为 360 微应用。

微应用实现了在 360 手机助手的应用下载页面,同时出现了“秒开”按钮,点击后直接使用。

并且在 360 手机助手的扫码里,应用的分享里,都实现了扫码获得一个应用,点击分享消息获得一个应用。

在 360 手机助手 3.4 版本中上线的中国第一个小程序

为了做大生态,DCloud 把这套技术标准,捐献给了 HTML5 中国产业联盟,随后,联盟开始推动更多的超级 App 和手机厂商加入,共同推进动态 App 产业的发展。

然而事情并不顺利,巨头们有自己的利益诉求。虽然有一批厂商同意加入联盟共建生态,但最关键的角色,真正的国民应用“微信”,最终决定自立标准、自研引擎,当然技术原理与流应用是基本一致的。

2016 年 1 月 11 日,微信公开课,张小龙罕见露面,公布了微信应用号的计划,为这个大事件亲自站台。

2016 年 9 月 21 日,微信宣布更名应用号为小程序,面向首批开发者内测。从此,这个词被正式定了下来,“小程序”,成为后续一个时代的代名词。而“流应用”、“微应用”则淹没在历史长河中成为一个令人唏嘘的故事。

2017 年 1 月 9 日,微信公开课,小程序面向用户正式推出。

从此后,阿里巴巴、手机厂商联盟、百度、今日头条,陆续推出了自己的小程序平台,其中也有很多波折与故事,在有偶然、有必然的过程中,形成了今天的局面。

小程序大潮卷入了更多人,并形成了更大的浪潮,最终迎来了不可逆转的小程序时代。

生态难,难于上青天

发明能解决功能体验和动态性的技术方案,虽然难,但不是最难的事情。

最难的是开发者生态的建设。

最初 HTML5 中国产业联盟的策略是在 HTML5 上扩展强化,复用现有的 HTML5 生态。

当微信的标准完全自立重建时,业内人士都悬着一颗心。

在全球,基于 Web 的技术生态已经非常成熟,各种开发工具、框架、组件、模板...提升着开发者的效率。

小程序丢弃了国际标准组织 W3C 的 DOM 和 Window 标准,仅仅采用基础 JavaScript。这意味着 HTML5 生态的各种轮子无法复用,要完全重造一个新的小程序开发生态。

当初微信推广 JS SDK 时,是那么地顺其自然,开发者纷纷开始使用,因为对于开发者,只是在他们的 H5 版本上补充一些 API 而已。

而小程序初期,充满了开发者的质疑声:我的业务迭代那么久,让我重新做一个版本,你的生态到底能不能支撑我的投入?

微信用持续而快速的版本升级、高管的站台,告诉大家微信做小程序的决心,并最终通过 2017 年底的跳一跳,引爆了小程序。

从此大家的问题不再是我要不要做小程序了,而转向了:既然要做,怎么才能提升小程序的开发效率、降低开发成本?

任何一种技术,或者开发模式的演进,在不断成熟的过程中,都遵循着类似的成熟规律:

技术标准 - 基础平台 - 开发工具 - 培训市场 - 框架诞生 - 周边生态逐步完善 - 轮子之上的轮子

在 HTML5 生态里,已经发展到最终极的形态,比如 Vue 是一个重要框架,而基于 Vue 的各种丰富的 UI 库、测试框架,则是轮子之上的轮子。

多层轮子代表着生态的繁荣,也意味着开发者的开发效率更高。

可微信的全新标准出现时,它把开发者推回了原始社会,一切都要重来。

这在当时看来,并不是一个必然会成功的事情(其实直到现在,比如图表类轮子,小程序仍然比不过 HTML5)。

时至今日,讨论这个标准的选择对错已经没有意义。当支付宝、百度、今日头条都开始参考这个标准做小程序时,时代已经不可阻挡。

所幸,最终的结果是,中国人做成了。在国际标准之外,在中国,终于建立起了自己的技术生态。

并且这个生态,给用户带来了更好的体验,给开发者带来了更多流量和变现效率的提升,这是一个比 HTML5 更优秀的生态。

野蛮的技术生态成长速度

两年时间,中国的小程序开发者如何从原始社会进阶到现代文明?这也是一段有趣的历史。

我们来看看小程序技术生态是如何快速成长,走完上面所说的这套技术成熟路线,也就是从技术标准到轮子之上的轮子的。

在 Web 世界里,已经成熟到了原生 JS 用量很少的时代了,开发人员大量使用 Vue 等框架,并且在 Vue 的基础之上,又有更多轮子。

当中国的开发人员面临重头开始时,他们感受到效率对比的差距,既然时代已不可阻挡,那就拥抱它。勤劳的中国技术人开始蓬勃地建设起了小程序各种周边技术生态。

其中比较重要的是开发框架的迭代,我们看看每个小程序开发框架为什么会诞生、流行和衰落。

最初的微信小程序,一片荒蛮,一份文档 + 一个难用的 IDE,很多效率工具比如 npm、预处理器这些都不支持,而这些已经是大型项目离不开的工具。

于是,第一个标志性的框架出现了 —— WePY。

WePY 紧随微信小程序在 2017 年发布,原本是腾讯其他部门的一个个人工程师的作品。在那个年代,WePY 有效地解决了小程序不支持 npm、预处理器的痛点,被引爆后,腾讯官方才把这个框架收编到官方的 GitHub 下。

不过WePY也面临很多问题,它使用了私有语法,这让它在生态建设上面临很大难度,IDE 着色、语法提示、语法校验、格式化、人员招聘培训等各方面问题制约着它的流行和普及。

面对这些问题,人们开始思考,有什么更好的方式,可以复用现有技术生态来快速完善小程序生态?

这时候下一个重要框架借势诞生,美团前端在 2018 年初开源了MPVue。

MPVue 采用 Vue 语法来开发小程序,通过对 Vue.js 的底层改造,实现了编译到微信小程序。

MPVue良好地借助了 Vue 的技术生态,周边工具如 IDE、校验器、格式化等支持直接复用、人员招聘培训等生态建设压力大幅下降,受到了大量开发者的欢迎。

看着熟悉 Vue 的开发者终于有了趁手的轮子,那熟悉 React 的开发者怎会无动于衷?

京东团队是 React 的重度用户,还自研了 JDreact,于是他们开发了 Taro 框架,一款基于 React 语法编写小程序的框架。

但 Taro 并不是想简单做一个MPVue在 React 世界里的翻版,Taro 相比MPVue,想要解决更多重要问题。

Taro 面世较晚,此时微信、支付宝、百度、头条都已发布或宣传了自己的小程序,开发者面临一个多端开发和适配的问题。

于是 Taro 率先支持多端开发,它甚至还能发布到 H5 和 App。

图源:京东凹凸实验室

当时小程序领域还有一个重要变化,微信开始支持小程序自定义组件。

组件是一个成熟框架不可缺的东西,不管是 Vue 还是 React 都有丰富的组件生态。

在过去,MPVue时代,是把 Vue 组件也编译成页面模板,这带来一个很大的性能问题,在复杂页面里(比如长列表)使用组件,更新组件状态会导致整个页面的数据全部从 JS 逻辑层向视图层通讯一次,大量数据通讯会非常卡顿。

注意:小程序的逻辑层运行在 V8 或JSCore下,和视图层是分离的,通讯阻塞很容易引发性能问题。

于是 Taro 把 React 组件编译为新出的微信小程序自定义组件,这种组件在数据更新时,只会更新组件内部的数据,而不是整个页面更新数据,从而大幅减少了数据通信量。

这一轮的后浪推前浪很猛,Taro 在性能和多端支持上,都超越了MPVue。

看着 React 阵营取得如此成绩,Vue 阵营自然会继续追击。

我们基于 Vue 开发了 uni-app,它实现了自定义组件编译模式,并在算法上做了很多优化。另外,之前MPVue对 Vue 的语法支持度不太完善,比如过滤器等不支持,在 uni-app 中我们进行了解决。

同样,uni-app 也看到了前浪的其他问题:Taro 虽然迈出了多端的第一步,但多端支持能力比较弱,每个平台仍然各自开发大量代码。核心原因,是Taro 在 H5 端和 App 端,并不是一个完整的小程序技术架构,无法保持最大程度的统一。

于是 uni-app 在 App 端,使用了一个技术架构相同的小程序引擎,本身就可以直接运行小程序应用,这个引擎搭配小程序代码打包为 App,开发者一行代码不用改,可以同时发布小程序和 App。

当然,其 App 引擎从 Hybrid 应用起家,它提供的 API 要比小程序多很多,因为 App 的需求会比小程序丰富,它还支持把 WebView 渲染引擎替换为 Weex 渲染引擎。

之后 uni-app 又发布了 H5 版的小程序引擎,原理与小程序的 PC 模拟器相同,实现了良好的跨 H5 版的发布。于是 uni-app 比较完美地实现了开发一次,7 个平台发布。

第一层轮子就这样迅速发展了起来,Web 世界里最成熟的 Vue、React 技术生态被导入了小程序开发生态中。然后轮子之上的轮子开始如火如荼的建设。

以 UI 库为例,之前的 UI 库,有 Vue 库、React 库,有 PC 库、H5 库和小程序库,种类繁多,甚至说混乱。

比如在 Vue 阵营中,Vant 和 iView 这两个 UI 库,都是同时维护两个版本,它们即有 H5 版,又有小程序版。

不止框架作者麻烦,开发者想在多端使用这些 UI 库时,会发现在不同端还需要引入不同的 UI 库,写法都不一样,这让开发者很崩溃。

既然已经可以多端开发应用,于是在多端开发的领域里,开始出现轮子之上的轮子,多端 UI 库。

首先是 Taro 推出了 Taro UI,实现了 H5 和小程序 UI 库的统一,不过可惜 Taro UI 不支持 App 端。

然后 uni-app 推出了 uni UI,这个 UI 库同时支持多家小程序、H5、App。

由于 uni-app 和 MPVue 同属 Vue 阵营,它们的组件是互通的。于是这两家联合举办了一场插件大赛,建立了插件市场。

在中国的前端开发者领域,有很多和国外不一样的地方:一个是国内有小程序,第二个是国内 Vue 的开发者体量远超过 React 和 Angular。这里面很大的原因,是 Vue.js 的作者尤雨溪,是中国人。

Vue 和 React 百度指数对比

在庞大的 Vue 用户体量支持下,uni-app 和 MPVue 的周边生态迅速发展起来,开发工具、周边轮子、教育培训等生态快速完善。目前在 Vue 阵营下,开发者在 Web 生态下所需的轮子,在多端开发下基本也都有了。

短短两年时间,小程序开发生态里几拨迭代,轮子之上的轮子不断涌现,快速进入了成熟期。

结语

产业还在继续发展,每当底层有重大技术变更时,上层框架世界就会发生新机会。

当年 HTML5 标准不统一,浏览器兼容性问题严重,诞生了 jQurey 的机会。而在移动互联网下半场,浏览器兼容已经不再是核心问题,jQurey 的地位被更适合移动互联网的 Vue 替代。

我们不知道未来还会有什么新的框架出世,但我们知道方向:

对于开发者而言,总是会向着更高的开发效率、更高的性能、更高的投入产出比前进。

对于开发商,目前的小程序,虽然发展了 2 年,但流量增长空间仍然巨大,微信之外,很多超级 App 的势能将逐渐释放,整个小程序产业的日活总量有数亿的提升空间。

如果开发商能追上这拨红利,就能获得更多增长。而多端框架的出现,可以帮助开发商更好的把握这拨红利。

中国的技术发展,此刻正在经历一个分水岭,从全面的技术进口,到开始建设自己的标准和开发者生态。迟早,会开始向外输出,引领世界的进步。

不管中美是否开打贸易战,这一转变都是必须做的事情。

中国的移动支付、小程序、5G,很多领域已经走在了全球前面。中国人发明的 Vue 已经在影响全球。

虽然还有很多困难仍需克服,但我们每个开发者,都是新时代的见证者,更是新生态的建设者!

作者简介:王安,DCloud 公司创始人,HTML5 中国产业联盟秘书长。2003 年开始从事移动互联网工作,十几年编程和商业经验,连续创业者。

声明:作者独立观点,不代表 CSDN 立场

新手问题:用asp编写登陆小程序

1.Dreamweaver完全可以开发asp。也可以开发php等。但是如果是.net或者jsp可以分别用visual studio 和MyEclipse。

2.你说的程序的话。我倒可以给你我最近写图书馆图书管理系统的登录部分的代码。做个参考。涉及到的图片。我就不给了哦。只是给你做给参考。

login.asp页面代码,连接数据库的我就不给了。为了安全

%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%

!--#include file="conn.asp"--

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""

html xmlns=""

head

meta http-equiv="Content-Type" content="text/html; charset=gb2312" /

link type="text/css" rel="stylesheet" href="css/index.css" /

script language="javascript" type="text/javascript" src="js/check.js"

/script

%

dim sql

sql = "select library_name,create_time,copyright_info from sysest"

set rs = server.CreateObject("adodb.recordset")

rs.open sql,conn,1,1

%

title%=rs("library_name")%/title

%

rs.close

conn.close

set rs = nothing

set conn = nothing

%

/head

body

div id="content"

div id="top"img src="images/top.gif" //div

div id="middle"

form action="check.asp" name="login" id="login" method="post" onsubmit="return check()"

ul

li用户账号

input name="username" type="text" id="username" size="20" maxlength="20" class="ec2b821f4f0ec62a input"/

/li

li用户密码

input name="pw" type="password" id="pw" size="20" maxlength="20" class="821f4f0ec62adb59 input"/

/li

li验证码

input name="code" type="text" id="code" size="4" maxlength="4" style="height:20px;border:#0099FF solid 1px;"/

img src="code.asp" alt="刷新验证码" onclick="this.src='code.asp'" style="cursor:pointer;"

li

input type="submit" value="登录" style="padding:0px 15px"/

input type="reset" value="重置" style="padding:0px 15px" /

/li

/ul

/form

/div

div id="bottom"img src="images/bottom.gif" //div

/div

/body

/html

安全检查的js客服端验证代码如下

//下面的代码部分是是对用户登录的验证的JavaScript代码

function check()

{

var reg = new RegExp("[0-9a-zA-Z]");

//首先是对用户名的判断部分

var username = document.all.username.value;

if(username=="")

{

alert("用户名是必填项,不可以为空!");

return false;

}

else if(!(reg.test(username)))

{

alert("请不要输入非法字符!");

return false;

}

//对密码的判断部分

var pw = document.all.pw.value;

if(pw=="")

{

alert("密码是必填项,不可以为空!");

return false;

}

else if(!(reg.test(pw)))

{

alert("请不要输入非法字符!");

return false;

}

//对验证码的判断部分

var code = document.all.code.value;

if(code=="")

{

alert("验证码是必填项,不可以为空!");

return false;

}

else if(!(reg.test(code)))

{

alert("请不要输入非法字符!");

return false;

}

else

{

return true;

}

}

服务器端验证代码

%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%

!--#include file="conn.asp"--

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""

html xmlns=""

head

meta http-equiv="Content-Type" content="text/html; charset=gb2312" /

title服务器端验证代码/title

style type="text/css"

/*

下面的代码是图书管理系统检测页面的css代码*/

/*

公共部分都css代码*/

*{

margin:0px;

padding:0px;

}

body{

font-family:Arial, Helvetica, sans-serif;

font-size:14px;

color:#ff0000;

}

ul,li{

list-style:none;

}

#content{

text-align:center;

margin:100px 50px;

}

/style

/head

body

%

'首先获得用户输入的用户名、密码、验证码三个东西

dim username,pw,code,bool,bool2

bool = false

bool2 = false

username = request.Form("username")

pw = request.Form("pw")

code = request.Form("code")

'获得输入后,进行用户名、密码、验证码合法性判断,用正则

set re = new RegExp

re.pattern="[a-zA-Z0-9]"

if re.test(username) then

if re.test(pw) then

if re.test(code) then

bool = true

end if

end if

end if

%

div id="content"

ul

li

%

if not bool then

response.Write("img src='images/error.gif'/")

end if

if bool=true and bool2=false then

dim sql

sql = "select admin_name,admin_pw,admin_power from sysadmin where admin_name='"username"' and admin_pw='"pw"'"

set rs = server.CreateObject("adodb.recordset")

rs.open sql,conn,1,1

if not rs.eof then

'登录成功后记录相关都session

session("power") = rs("admin_power")

session("username") = username

'关闭上面查询完成的rs

rs.close

set rs = nothing

dim getcode

getcode=UCase(Cstr(Session("GetENCode")))

if getcode=code then

bool2 = true

response.Write("img src='images/loginsuccess.gif'/")

end if

Session("GetENCode")=""

else

response.Write("img src='images/error.gif'/")

end if

end if

%

/li

li

%

if not bool then

dim ip,logintime

logintime = now()

ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

If ip = "" Then

ip = Request.ServerVariables("REMOTE_ADDR")

end if

sql = "insert into errorlog(error_name,error_pw,error_ip,error_time) values('"username"','"pw"','"ip"','"logintime"')"

set rs = server.CreateObject("adodb.recordset")

rs.open sql,conn,1,3

response.Write("我们检测到非法字符!已经记录了你的ip!!!")

end if

if not bool2 and bool=true then

response.Write("输入的用户名或密码或验证码错误!!!请后退核实之后再次输入!!!")

end if

if bool2 then

response.Write("登录成功!!!系统在3秒后自动跳转到管理页面!!!")

response.Write("meta http-equiv='refresh' content='3;url=admin/index.asp'")

response.Write("如果页面无跳转!!!请点击a href='admin/index.asp'到管理界面/a")

end if

conn.close

set conn = nothing

%

/li

/ul

/div

/body

/html

还有css部分差点忘给了

/*

下面的代码是图书管理系统首页的css代码*/

/*

公共部分都css代码*/

*{

margin:0px;

padding:0px;

}

body{

font-family:Arial, Helvetica, sans-serif;

font-size:12px;

color:#000000;

background:url(../images/bgcolor.gif);

}

/*下面的代码用于对齐用户名和密码输入框*/

.input{

color:#006699;

width:100px;

height:20px;

border:#0099FF solid 1px;

}

#content{

text-align:center;

margin:100px 50px;

}

#middle{

background:url(../images/middle.gif);

width:884px;

}

#middle ul{

list-style:none;

}

#middle ul,li{

padding:10px 3px;

}

解决微信小程序文字不换行

为了展示效果,提前加入多行文本模拟数据。如下图

给需要使用换行的 text 标签添加CSS自动换行属性

小程序中的 textarea 等标签虽然都是显示文本的双闭合标签,但在使用方式上跟W3C标准下的 textarea 标签有所不同。延伸阅读: 微信小程序开发文档·textarea组件

js文件

关于小程序开发文档w3c和小程序开发文档湖南岚鸿的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码