用纯js就可以写一个网页!为什么还要用html和css,为什么不把html及css舍去??有这发展

JavaScript010

用纯js就可以写一个网页!为什么还要用html和css,为什么不把html及css舍去??有这发展,第1张

很多学生在学习JS的时候都有这个疑问,为什么不抛弃css它们直接用JavaScript开发呢?

首先要确定,即使抛开游戏不论,一般的Web应用或者网站,完全用JavaScript开发也是可行的。比如ExtJS、webOS的Enyo等。但是主流Web开发很少采用全JS的方案。原因大体有以下几点:

1. 注重考虑那些无法运行JS的用户代理。

用户使用不支持JS的浏览器(比如较老的手机浏览器),或者禁用脚本。当然你可以选择忽略这一小撮用户,尤其是现在绝大多数网站和应用也是如此选择的,但是至少我们应该对坚持考虑无JS情况的开发者予以基本的尊重。此外,如 Mobile Transcoder或某些手机浏览器的“极速模式”是基于服务器端对网页的解析和重组,是否能支持JS很够呛。

更重要的因素是SEO friendly。如果是全JS生成的网页,搜索引擎无法索引内容。这一点对于许多网站是性命攸关的。

2. 注重HTML/CSS本身的优点。

诚然JS本身也可以通过精心设计的框架和库来实现分离等所有HTML/CSS模型的优点。但是存在许多不确定因素:

1) 有足够好的框架和库吗?

2) 框架和库给出的抽象模型和HTML/CSS模型的阻抗是否匹配?

3.注重性能。

最终Web应用、页面是在浏览器中执行,而浏览器完全是按照HTML/CSS所设计。抛开Canvas不论,纯JS的实现最终还是要生成DOM。从性能的角度看,纯JS生成DOM自然赶不上直接的markup。同样的道理,就算用CSS预处理器也都会在部署时预先编译——尽管在运行时可以做出更牛逼的特性(然而实际上目前我不知道有任何CSS预处理器干了这样的事情——因为它们都是按照预编译的场景设计的),再如HTML/CSS是按照渐进显示优化的(页面不用全下载完就可以看部分),而纯JS的架构没有精心设计是很难做到的(比如json数据全部下载完你才能parse,数据才可用,DOM才能生成)。

现在想要学习Web前端,好的专业培训机构也很多的。例如北大青鸟、南京课工场、南京中博软件学院等等,你可以试听一下课程参考一下。

简单的web网页开发,HTML+CSS 学习比较容易,门槛低,HTML的语义可以让屏幕阅读器方便的读取页面的内容,搜索引擎不需要转义js直接抓取html里面的内容。复杂的web开发,web app,RIA。html只是作为结构存在,可以认为它是一套组件库,相对于情况一,一个页面的代码里肯定就没几行html,都被写到了js里面(当然最终得到的还是满满的html)。

当整屏幕的input输入框的时候,难道就那么不稀罕html提供给你的表单功能而硬要自己做一个?游戏开发,canvas就直接用js。

手写了半天,应该够详细了,不知道你要问的是哪部分就把所有代码都注释了,希望对你有帮助,觉得好的话给个好评吧

<head>

<title>test</title>

<style type="text/css">

/*样式单部分注释*/

/*页面主体样式:字体中间对齐,字体号为12像素*/

body{text-align:centerfont-size:12px}

/*id为wrapper的元素样式:字体左对齐,宽度为98%,外补丁(与外侧容器间距)为0*/

#wrapper{width:98%margin:0 autotext-align:left}

/*id为left的元素样式:宽度20%,布局浮动为左侧可浮动*/

#left{float:leftwidth:20%}

/*id为right的元素样式:宽度75%,布局浮动为右侧可浮动*/

#right{float:rightwidth:75%}

/*字体号为18磅(注意与px不同)*/

.STYLE1 {font-size: 18pt}

</style>

<script type="text/javascript">

function frame() {

//定义id为nav的元素为var nav

var nav = document.getElementById("nav")

//定义nav变量中的链接为var link

var links = nav.getElementsByTagName("a")

//定义id为right的元素为var right

var right = document.getElementById("right")

//循环控制,使在点击链接的时候,做出不同的反应

for (var i = 0i <links.lengthi++) {

links[i].onclick = function() {

remove()

//定义链接指向的页面路径

var source = this.getAttribute("href")

//定义动态穿件的frame(窗体)

var frame = document.createElement("iframe")

//下面都是个这个窗体添加属性

frame.setAttribute("src", source)

frame.setAttribute("frameborder", "0")

frame.setAttribute("width", "100%")

frame.setAttribute("height", "600px")

//构建完成,添加进入right元素中去

right.appendChild(frame)

return false

}

}

}

//删除方法,删除right中的元素

function remove() {

var right = document.getElementById("right")

if (right.hasChildNodes()) {

right.removeChild(right.childNodes[0])

}

}

//初始化方法,页面初始化即执行 frame()方法

window.onload = function() {

frame()

}

</script>

</head>

<body>

<div id="wrapper">

<div id="left">

<!--一个列表 -->

<ul class="STYLE1" id="nav">

<li><a href="fuzhuang.html">衣</a></li>

<li><a href="zhufang.html">住</a></li>

</ul>

</div>

<div id="right">

<!--一个iframe窗体标签,初始路径指向fuzhuang.html -->

<iframe id="ifr" width="100%" height="800" src="fuzhuang.html"/>

</div>

</div>

</body>

</html>