什么是web3.0

 更新时间:2016年9月20日 19:06  点击:2264

什么是WEB3.0?业内专家诠释:即"WEB3.0=互联网+通讯服务(Internet+Instant Communications)",即通过互联网与通讯的融合,用户可以用所有智能终端(固定电话、移动电话、PC、IPTV、其他智能终端)轻松享受看得见、听的到、用得好的即时交互的信息服务,它必然具备的特性应包括:即时性,融合性,互动性,个性化及自主性。WEB3.0技术提供的服务与目前互联网服务的核心差异在于:WEB3.0是基于个性化、订阅式、主动推送式的即时服务,而目前的互联网服务是围绕着搜索引擎的非即时服务。

看图:


 什么是2.0

定义:所谓的2.0是互联网应用理念上和架构上的升级,而不是简单的某种技术的创新或者某种应用

Ajax、blog、rss、wiki,这些是web2.0?Ajax只是一种一直以来都存在的javascript应用,blog只不过是个人主页的一种改进,rss只不过是xml中一种格式。

所以关键的不再与技术,而在于理念。理念上,Ajax推崇异步web应用;blog推崇一个人为中心的内容管理;rss将分散的个人内容有效的聚集到一起。

web2.0期间出现的应用,虽然有一定的技术含量在里面,但那不是主要因素,你没法从技术上解释web2.0,blog远不如bbs系统的技术成熟和复杂,但是理念更前卫。

我曾经一向讨厌web2.0的叫法,主要是被一些人瞎忽悠搞得很烦。但是不得不承认,web2.0确实是一个非常成功的命名。所以今天也借着这种叫法来说事,就叫web3.0吧。

 

2 web3.0

2.1 web2.0只是开始和过渡

web2.0虽然在理念上有了一定的升级,但还是远远不够的,我们仍然可以看到很多问题,我只说三个:blog的发布系统、评论系统和插件应用

2.1.1 发布系统

内容管理是blog的最基本功能,现在blog的系统也无非是实现了What You See is What you Get (WYSIWYG) 的可视化编辑,实现了分类,复杂点的实现了TAGs。内容的索引能力都是无一例外的很差(blogger可能会好点,具体没研究),版本控制似乎还没有哪个blog有,现在看来,这些功能还稍显复杂,但当一个blog堆积了1000篇文章的时候,索引和修改都会变得非常困难。就如我的blog,想要找一篇历史文章,我都用google去搜索,想要改动什么文字,我宁可重新写一篇新的,想要重新整理整个Blog?那我一定是疯了- -

所以,未来blog(其实也无所谓blog,应该是个人网络中心,下面我会讲到)的内容管理一定会加入现在wiki里面的版本控制功能,集成功能强大的全文索引功能。

我已经很久没更新blog,多半原因是后台太难用了,今天装了Live writer才有动力写篇文章上来。在网速和浏览器速度没有足够快之前,我还是宁可多花几分钟的时间下载和安装一个客户端,在享受更强大编辑功能同时,节省很多时间。

2.1.2 评论系统

上面我说到blog的技术成熟度远低于bbs,评论系统就是其中之一,纵观现在所有的blog系统和bsp,我还没见过哪个blog系统的评论功能能跟 Discuz比。blog不需要功能复杂的评论?那你可就错了,去看看老徐的博客,随便那篇文章不是成百上千的评论?你觉得新浪的评论系统够用吗?它起码有分页,比我用的mt强多了,但还是无法实现丰富的内容编辑和索引。

说道评论系统不得不说的是trackback,trackback 作为一种blog之间内容关联评论功能,本来是想泥补跨站内容关联的功能缺陷,但实现的太蹩脚太简单,以至于很多人不知道这个东西怎么用,却被 spammer找到空当大肆利用。现在已经成为一个鸡肋,很多人在扬言trackback已死。

除trackback外的评论内容,留言者都无法管理和监控,虽然有些blog系统有自动邮件提醒的功能,但这是远不够的。

所以未来评论系统也一定会强化。

2.1.3 插件应用

blog系统的不足远不止发布系统和评论系统,插件是目前填补系统功能不足的最有效手段,wordpress的成功,就得益于完善的插件平台,得到了广大开发者的支持。

但是wp的插件系统缺陷是显而易见的,我做了好多年php开发的人,使用起来都觉得头大,非技术人员就不用说了。另外,wp的插件是无法迁移到其他平台上用的,尤其是跨语言的平台。

现在国外有一些平台,已经在做这样的标准,通过一个REST风格的url就可以忽略平台限制,使用插件。比如netvibes、Facebook、iGoogle、live,国内,sohu blog也引进了netvibes的uwa框架,尝试做开放式blog widget平台。

这有点类似于rss的应用,用xml的标准推行内容传播,Open Widget则是将widget作为一种内容,通过xml的标准传播。

没有哪一家服务供应商或者平台开发者能够满足所有用户的需求,只有Open的大千世界,才是大家所期望的,所以Open Widget一定会成为一种趋势。

好了,说了这么多,无法而是想证明web2.0只是一个过度,那么什么才是web3.0呢?

2.2 什么是web3.0

其实说到这里,很多人应该已经看出来,没有什么所谓的2.0、3.0,因为你没法准确的界定他是什么样的应用,也没法界定它是什么时候开始的,什么时候结束,它只是互联网本身发展的一种趋势。

我要说的3.0,是我目前所能想象的未来互联网应用的框架。
   
  a、网站内信息可以直接和其他网站信息进行交互和倒腾,能通过第三方信息平台同时对多家网站信息进行整合使用;
  b、用户在互联网上拥有自己的数据,并能在不同的网站上使用;
  c、完全基于Web,用浏览器即可实现复杂的系统程序才具有的功能
    可以说Web3.0是三广+三跨(广域的 广语的 广博的 跨区域 跨语种 跨行业)
现实中的每一个行业都是在不断的细分和完善中发展的,比如建筑业、金融业,都已经有比较清晰的划分并且仍在细化,这是几百上千年的发展过程中建立起来的。而互联网才不过发展了不过短短十几年,对于一个可以涵盖几乎所有传统行业的领域来说,现在的互联网应用细分程度还远远不够。就如软件工程里面说的,软件开发的标准和规范还十分简单,开发方法和模块的重用程度远远不够。

互联网也是如此,各种应用的细分、完整性和重用程度远远不够。

所以我认为,未来互联网应用的发展方向一定是向着更加细分、更加专业、更加兼容的方向发展,内容管理将有专业的内容管理提供商,comments将有专业的 comments服务商;插件将有类似于rss的统一标准,而且也会出现像feedburner、google reader这样的widget托管平台和订阅平台。

blog,将演变为个人中心,个人中心中的所有内容只有一个域名和一个页面,剩下的所有的服务都由专业服务商提供,用户只需将需要的应用以widget的方式添加到自己的页面上,就可以享用各种各样完善的服务。

但也不会是像google ig、netvibes这样的集中型个人主页,因为他们没有个性,灵活性也不够。也不会是sohu这样的blog平台,因为各种服务都不是一家公司提供的,bsp可能回归到最原始的个人主页服务,提供一个二级域名和一个静态空间。

那么最主要的一个问题:帐号由谁提供呢?OpenID肯定会成为web3.0的中坚力量,将各个平台有机的连接起来,是你无论走到哪,都用同一个帐号,内容处处关联。

而id 服务本身是需要跟信用挂钩的,这是虚拟和现实之间必须建立的桥梁,现有的社区中信用服务都是依靠某种技术手段建立,都很费劲,而且无法跟现实中的人和信用建立起完整有效的关联,我们不难想到,直接掌握最可靠信用的是银行,所以未来提供OpenID或者互联网身份服务将是银行建立的一种服务,很可能成为银行的某种业务。

在这种模式下,互联网服务已经跟传统的服务行业一样,提供专业服务,收费,互联网的盈利模式也将随之改变。

本教程主要介绍HTML网页如何取得形如test.html?foo=mytest的foo参数,以及在HTML网页中如何向swf传递参数。

一、在HTML网页中使用js获取参数。
我们知道HTML页面是在客户端执行的,这样要获取参数必须使用客户端脚本(如Javascript),在这点上不同于服务器端脚本获取参数方式。下面的这段js代码获取HTML网页形如"test.html?foo=mytest&program=flash" "?"后所有参数。

<script language=javascript>
<!--
var hrefstr,pos,parastr;
hrefstr = window.location.href;
pos = hrefstr.indexOf("?");
parastr = hrefstr.substring(pos+1);
if (pos>0){
document.write("所有参数:"+parastr);
} else {
document.write("无参数");
}
//-->
</script>


下面的这段js代码则可以更加细化获取HTML网页某一参数

<script language=javascript>
<!--
function getparastr(strname) {
var hrefstr,pos,parastr,para,tempstr;
hrefstr = window.location.href;
pos = hrefstr.indexOf("?")
parastr = hrefstr.substring(pos+1);

para = parastr.split("&");
tempstr="";
for(i=0;i<para.length;i++)
{
tempstr = para[i];
pos = tempstr.indexOf("=");
if(tempstr.substring(0,pos) == strname) {
return tempstr.substring(pos+1);
}
}
return null;
}
// 获取program参数
var programstr = getparastr("program");
document.write(programstr);
//-->
</script>


二、在HTML网页中向swf传递参数。
方法一:在网页中使用js,SetVariable设置flashobject中的变量,代码如:

// "HtmlToSwf"为网页中的flashobject ID
HtmlToSwf.SetVariable("_root.info_str","Happy Newyear");


方法二:路径参数,如test.swf?foo=happy2005
方法三:使用FlashVars,以下主要介绍FlashVars的用法。使用FlashVars后嵌入HTML的flashobject代码如下:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/
pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" id="FlashVars" align=
"middle">
<param name="allowscriptAccess" value="sameDomain" />
<param name="movie" value="FlashVars.swf" />
<param name="FlashVars" value="foo=happy2005&program=flash&language=简体中文-中国" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="FlashVars.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="FlashVars"
align="middle" allowscriptAccess="sameDomain" FlashVars="foo=happy2005&program=flash&language=
简体中文-中国"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />



通过上面的代码,在SWF(FlashVars.swf)中就可以直接获取foo、program、language变量数据。FlashVars.fla获取FlashVars参数的代码如下:

// 创建三个文本字段
_root.createTextField("foo_txt",1,0,0,16,16);
_root.createTextField("program_txt",2,0,32,16,16);
_root.createTextField("language_txt",3,0,64,16,16);
foo_txt.autoSize = true;
foo_txt.border = true;
program_txt.autoSize = true;
program_txt.border = true;
language_txt.autoSize = true;
language_txt.border = true;
// 获取FlashVars变量
foo_txt.text = "HTML中的foo参数:"+foo;
program_txt.text = "HTML中的program参数:"+program;
language_txt.text = "HTML中的language参数:"+language;



三、两者的有效结合。
在HTML网页中使用js获取参数,然后将获取的参数作为FlashVars写入flashobject传递给swf。代码如下:

<script language=javascript>
<!--
function writeflashobject(parastr) {
document.write("<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase=http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0
width="550" height="400" id="FlashVars" align="middle">n");
document.write("<param name="allowscriptAccess" value="sameDomain" />n");
document.write("<param name="movie" value="FlashVars.swf" />n");
document.write("<param name="FlashVars" value=""+ parastr +"" />n");
document.write("<param name="quality" value="high" />n");
document.write("<param name="bgcolor" value="#ffffff" />n");
document.write("<embed src="FlashVars.swf" quality="high" bgcolor="#ffffff" width="550"
height="400" name="FlashVars" align="middle" allowscriptAccess="sameDomain" FlashVars=
""+ parastr +"" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/
go/getflashplayer" />");
document.write("</object>");
}
function getparastr() {
var hrefstr,pos,parastr,para,tempstr1;
hrefstr = window.location.href;
pos = hrefstr.indexOf("?")
parastr = hrefstr.substring(pos+1);
return parastr;
}
var parastr = getparastr();
writeflashobject(parastr);
//-->
</script>

这篇文章主要阐述 HTML 和 XHTML 的区别。简单来说,XHTML 可以认为是 XML 版本的 HTML,为符合 XML 要求,XHTML 语法上要求更严谨些。

以下是 XHTML 相对 HTML 的几大区别:

  • XHTML 要求正确嵌套
  • XHTML 所有元素必须关闭
  • XHTML 区分大小写
  • XHTML 属性值要用双引号
  • XHTML 用 id 属性代替 name 属性
  • XHTML 特殊字符的处理

XHTML 要求正确嵌套

以下是正确的嵌套:

<p>网页教学网<strong>更新速度最快</strong>。</p>

以下是错误的嵌套:

<p>网页教学网<strong>更新速度最快</p></strong>。

XHTML 所有元素必须关闭

在 HTML 中 ,比如 <p>,<li> 这些标记,你可以不写 </p>,</li>,但是在 XHTML 里,必须要求写关闭标记 (Closing Tag)。

比如:

<p>网页教学网很认真。

应该写成:

<p >网页教学网很认真 。</p>

处理空元素

有些空元素 ,在 XHTML 里的写法是在">"之前加空格和斜杠。比如<br>,应该写成<br />。

以下 是空元素的例子:

<br />
<hr />
<img src = "/images/adpics/1/b027.jpg" alt = "webjx" />
<link rel="stylesheet" href="/styles/webjx.css" type ="text/css" />
<meta http-equiv="content -type" content="text/html; charset=UTF-8" / >

XHTML 区分大小写

HTML 不区分大小写,但是 XHTML 是区分大小写的。

XHTML 语法上要求更严谨些。要积极的看待这个问题。

XHTML 的所有标记和属性都要 小写。

比如:

<IMG SRC = "/images/adpics/1/b027 .jpg" Alt = "webjx" />

应该写成:

<img src = "/images/adpics/1/b027.jpg" alt = "webjx " />

XHTML 属性值要用双引号

情况就有所不同。并不强制要求属性值加双引号?

HTML 并不强制要求属性值加双引号。比如你可以写:

<table cellspacing = 0>
<input checked >

的几大区别:HTML 4 .01 相比实在没有什么不同?

但在 XHTML 里,应该写成:

<table cellspacing = "0 ">
<input checked = "checked" / >

XHTML 用 id 属性代替 name 属性

HTML 很多元素,比如 a,applet,frame,iframe,img 和 map,有 name 属性。在 XHTML 里是要废除的,而用 id 属性取而代之。

比如:

<img src="webjx.gif" name="webjx logo" />

应该写成:

<img src="webjx.gif" id="webjx logo" />

XHTML 特殊字符的处理

& 应该在 XHTML 里应该写成 &amp;。

比如:比如:XHTML 的所有标记和属性都要小写。

比如:

You & Me

应该写成:

You &amp; Me

还有如果内嵌 Jav ascript 代码,在 XHTML 里则应该写成:

<script type="text/javascript">// <![CDATA[
...
//]]></script>

浏览器的角度

以上是从协议标准的角度来看待这个问题的。如果从浏览器的角度来看待这个问题,情况就有所不同。

考虑一下,如果把 XHTML 写得很不严格,浏览器会怎么做?是不是会弹出一个对话框,写着“这个网站的开发人员技术不过关,写的不是正宗的 XHTML 文件,咱不显示”?显然,如果浏览器做成这个样子,倒贴钱也是不会有人用的。

从浏览器的角度看待上面几个不同,大致 是下面的测试结果(IE 和Firefox我都测试过):

  • XHTML 要求正确嵌套:如果你没有嵌套,浏览器会试图帮你嵌套。
  • XHTML 所有元素必须关闭:如果你没有关闭,浏览器会试图帮你关闭。
  • XHTML 区分大小写:你非要写成大写,浏览器帮你转换成为小写。
  • 属性值要用双引号:你非要不肯加,浏览器帮你加。
  • 特殊字符的处理:You & Me 也好,You &amp; Me 也好 ,浏览器都能读入。
  • 用 id 属性代替 name 属性 :你非要用 name 也可以。

XHTML 里应该写成 &amp;。以下是正确的嵌套。

如果 你在文档开始用 DocType 指定为 XHTML 了,有一点需要注意。在给 Tag 用 class 指定CSS 的时候,是区分大小写的。例如,你定义了一个CSS如下,

<style>
.hello { ...... }
</style >

而你使用的时候写成,

<p class="Hello"> ......

而你使用的时候写成,如果从浏览器的角度来看待这个问题 。

那这个CSS是不会被使用的。要积极的看待这个问题,这让你可以用更多的名字来命名 Style,是一个好事。

XHTML 标准的前途

从标准制定者的初衷看,制定 XHTML 标准是试图把 HTML 规范成为严格的 XML 格式,这样无可避免的会导致一个结果,就是从 HTML 到 XHTML 的升级导致标准的容错能力降低了。把自己的网页源文件写得严格一点当然是好事,但是一个标准不可能去要求浏览器降低自己的容错能力。

XHTML 1 .0 标准是兼容 HTML 4.01,是个不错的协议,可以让开发者在编写代码的同时通过一些工具来检查代码的合法性,虽然对于用户而言,制作出来的网页和 HTML 4.01 相比实在没有什么不同。对于你写新的网页来说,使用 XHTML 1.0 还是一个不错的选择。

XHTML 1.1 标准要求浏览器不再支持原先的容错能力,这是一个标准制定者走火入魔的典型例子,这个标准从学术上说非常纯净,但是对于浏览器而言,则是个呆板、笨拙、不可理喻的标准。所以目前所有由人类开发的浏览器都没有遵照所谓纯净的 XHTML 1.1的标准,你的代码只要浏览器能读懂,他都会很好的显示出来,而不跳出弹框报错。

应该写成::应该写成:以下是 XHTML 相对 !

从发展的趋势来看,一个标准没有浏览器服从,等于是没有意义的标准。从浏览器的实现角度来看,新的协议只能在原来 HTML 的基础上扩大能力增加容错 ,而不能缩小了能力减少容错。所以新的协议中,只有扩大能力增加容错的部分会被采纳,而其他部分都仅仅是纸上谈兵而已。

在HTML网页中使用js获取参数。
我们知道HTML页面是在客户端执行的,这样要获取参数必须使用客户端脚本(如Javascript),在这点上不同于服务器端脚本获取参数方式。
下面的这段js代码获取HTML网页形如"test.html?foo=mytest&program=flash" "?"后所有参数。

<script language=javascript>
<!--
var hrefstr,pos,parastr;
hrefstr = window.location.href;
pos = hrefstr.indexOf("?");
parastr = hrefstr.substring(pos+1);
if (pos>0){
document.write("所有参数:"+parastr);
} else {
document.write("无参数");
}
//-->
</script>



下面的这段js代码则可以更加细化获取HTML网页某一参数

<script language=javascript>
<!--
function getparastr(strname) {
var hrefstr,pos,parastr,para,tempstr;
hrefstr = window.location.href;
pos = hrefstr.indexOf("?")
parastr = hrefstr.substring(pos+1);

para = parastr.split("&");
tempstr="";
for(i=0;i<para.length;i++)
{
tempstr = para[i];
pos = tempstr.indexOf("=");
if(tempstr.substring(0,pos) == strname) {
return tempstr.substring(pos+1);
}
}
return null;
}
// 获取program参数
var programstr = getparastr("program");
document.write(programstr);
//-->
</script>

 

[!--infotagslink--]

相关文章

  • Springboot如何实现Web系统License授权认证

    这篇文章主要介绍了Springboot如何实现Web系统License授权认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-28
  • Python3 实现将bytes图片转jpg格式

    这篇文章主要介绍了Python3 实现将bytes图片转jpg格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-08
  • C#使用Http Post方式传递Json数据字符串调用Web Service

    这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • Python3中小括号()、中括号[]、花括号{}的区别详解

    这篇文章主要介绍了Python3中小括号()、中括号[]、花括号{}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-15
  • InterlliJ IDEA2020新建java web项目找不到Static Web的解决

    这篇文章主要介绍了InterlliJ IDEA2020新建java web项目找不到Static Web的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-02
  • 浅谈vue2的$refs在vue3组合式API中的替代方法

    这篇文章主要介绍了浅谈vue2的$refs在vue3组合式API中的替代方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-18
  • vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件

    这篇文章主要介绍了vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下...2021-02-20
  • 图解Sublime Text3使用技巧

    通过本篇文章给大家介绍Sublime Text3使用技巧的相关知识,对sublime text3技巧相关知识感兴趣的朋友一起学习吧...2015-12-24
  • Python3 常用数据标准化方法详解

    这篇文章主要介绍了Python3 常用数据标准化方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-24
  • 详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)

    这篇文章主要介绍了在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • jQuery mobile 移动web(6)

    这篇文章主要介绍了jQuery mobile 移动web(6)的相关资料,需要的朋友可以参考下...2015-12-21
  • Vue3 编译流程-源码解析

    今天将从 Vue 的入口文件开始,看看声明了一个 Vue 的单文件之后是如何被 compile-core 编译核心模块编译成渲染函数的。下面小编讲解并附上代码分析展现在文章里,感兴趣的小伙伴不要错过奥...2021-09-25
  • vue3弹出层V3Popup实例详解

    这篇文章主要介绍了vue3弹出层V3Popup实例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-04
  • 亚马逊AWS的RDS备份到存储桶S3(sqlserver)

    我们可以从 RDS 实例中进行本机 SQL Server 数据库备份,并将其存储在 Amazon S3 存储桶中。这些备份可以还原到 SQL Server 的本地副本或另一个支持 RDS 的 SQL Server 实例。您还可以将本地数据库备份复制到 S3,然后再将其还原到 RDS SQL Server 实例。...2018-03-11
  • vue3源码剖析之简单实现方法

    源码的重要性相信不用再多说什么了吧,特别是用Vue 框架的,一般在面试的时候面试官多多少少都会考察源码层面的内容,下面这篇文章主要给大家介绍了关于vue3源码剖析之简单实现的相关资料,需要的朋友可以参考下...2021-09-07
  • Vue3中reactive函数toRef函数ref函数简介

    这篇文章主要介绍了Vue3中的三种函数,分别对reactive函数toRef函数以及ref函数原理及使用作了简单介绍,有需要的朋友可以借鉴参考下...2021-09-24
  • C语言实现从文件读入一个3*3数组,并计算每行的平均值

    今天小编就为大家分享一篇C语言实现从文件读入一个3*3数组,并计算每行的平均值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
  • 浅谈Python3中print函数的换行

    这篇文章主要介绍了浅谈Python3中print函数的换行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-05
  • Microsoft Expression Web 简体中文正式版 官方下载地址

    Microsoft Expression Web 简体中文正式版相对于早期的 Microsoft Expression Web Designer CTP1(英文)除了它是正式的中文版外,有进步的地方1.对标签的id名称加上了css的代...2020-06-25
  • Tomcat首次部署web项目流程图解

    这篇文章主要介绍了Tomcat首次部署web项目流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-11