2016年某前端群題目答案參考

来源:http://www.cnblogs.com/i7758/archive/2016/02/26/5220447.html
-Advertisement-
Play Games

一.CSS部分 1.什麼是盒模型? 盒模型是網頁製作的基礎,在網頁文檔中每個元素都將被描繪為一個矩形盒子來進行渲染。通常來說,一個完整的盒子如下圖所示: 2.Doctype的幾種類型? Doctype是Document Type(文檔類型)的簡寫,在頁面中,用來指定頁面所使用的XHTML(或者HTM


一.CSS部分

1.什麼是盒模型?

盒模型是網頁製作的基礎,在網頁文檔中每個元素都將被描繪為一個矩形盒子來進行渲染。通常來說,一個完整的盒子如下圖所示:

2016年某前端群題目答案參考 - 愛七七五八網 - 1

2.Doctype的幾種類型?

Doctype是Document Type(文檔類型)的簡寫,在頁面中,用來指定頁面所使用的XHTML(或者HTML)版本。

在 XHTML1.0和HTML 4.01 中有三種 <!DOCTYPE> 聲明。分別為過渡的(Transitional)、嚴格的(Strict)和框架的(Frameset)。^Doctype

(1)過渡的

一種要求不太嚴格的方式,允許在頁面中使用HTML4.01的標識(符合xhtml語法標準)。過渡的DTD的寫法如下:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

(2)嚴格的

一種要求嚴格的DTD,不允許使用任何表現層的標識和屬性,例如<br/>等。嚴格的DTD的寫法如下:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”

“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>

(3)框架的

一種專門針對框架頁面所使用的DTD,當頁面中含有框架元素時,就要採用這種DTD。框架的DTD的寫法如下:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

“http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”>

在 HTML5 中只有一種:

<!DOCTYPE html>

3.如何佈局左不動右邊自適應的兩列佈局?

思路主要為以下兩種:

1.左邊定寬,浮動

2.左邊絕對定位

<html>

<head>

<meta charset=”utf-8″>

<title>1</title>

<style type=”text/css”>

*{

margin: 0;

padding: 0;

}

#left {

position:absolute;

/*float: left;/*區別*/

background-color: red;

width: 250px;

}

#content {

background-color: orange;

margin-left: 250px;/*==等於左邊欄寬度==*/

}

</style>

</head>

<body>

<div id=”left”>left</div>

<div id=”content”>content</div>

</body>

</html>

4.如何佈局兩列等高?

主要思路如下:

1.假等高列方法,在列的父元素上使用背景圖片在y軸上平鋪,造成等高列的假象

2.table-cell法

<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<title>Document</title>

<style type=”text/css” media=”screen”>

#box{

width:800px;

background:red;

margin:0 auto;

overflow:hidden;

}

.col{

display:table-cell;

width:400px;

}

.col:first-child{

background:blue;

}

.col:last-child{

background:green;

}

</style>

</head>

<body>

<div id=”box”>

<div class=”col”>

<p>123</p>

<p>456</p>

<p>456</p>

<p>456</p>

</div>

<div class=”col”>8989</div>

</div>

</body>

</html>

3.補丁法

<!DOCTYPE html>

<html>

<head>

<meta charset=”utf-8″>

<title>兩列等高佈局(float+margin+position)</title>

<style type=”text/css”>

#fa {

width: 800px;

margin: 0 auto;

background-color: #1524e5;

/*

*overflow就決定了#fa元素生成了bfc或者觸發了haslayout

*並且還把超出的高度截掉了

*/

overflow: hidden;

}

.col {

float: left;

width: 50%;

padding-bottom: 10000px;

margin-bottom: -10000px;

/*

*把下麵兩行註釋去掉試試看

*你會發現父元素的背景出現了

*這說明父元素的高度是最高的子元素的高度

*而子元素的高度就是根據盒模型算出來的

*/

/* padding-bottom: 100px; */

/* margin-bottom: -100px; */

/*

*由於生成了bfc,所以如果給子元素加一個margin-top,也會被計算進高度

*不信去掉下麵的註釋試試~

*上邊出現了父元素的背景吧~~~

*/

/* margin-top: 20px; */

}

.col:first-child {

background-color: #34ef34;

}

.col:last-child {

background-color: #ef34ef;

}

</style>

</head>

<body>

<div id=”fa”>

<div class=”col”>

<p>1231321321</p>

<p>1313213</p>

<p>1313213</p>

<p>1313213</p>

<p>1313213</p>

<p>1313213</p>

</div>

<div class=”col”>45645456456</div>

</div>

</body>

</html>

5.如何佈局右側定寬,左側或中間自適應?

<!DOCTYPE html>

<html>

<head>

<meta charset=”utf-8″>

<title>右側定寬,左側自適應寬</title>

<style type=”text/css”>

*{

margin: 0;

padding: 0;

}

#content {

width: 100%;

color: red;

float: left;

background:#666;

height:400px;

margin-right: -230px;/*==等於右側欄寬度==*/

}

#side{

width:230px;/*==等於右側欄寬度==*/

height:500px;

color:#fff;

background:green;

float: left;

}

</style>

</head>

<body>

<div id=”content”>Main Content</div>

<div id=”side”></div>

</body>

</html>

6.如何佈局三列自適應?

主要思路如下:

1.絕對定位法(左右兩欄絕對定位,固定於頁面兩側,主體欄用margin撐開距離)

<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<style type=”text/css” media=”screen”>

*{

margin:0px;

height: 100%;

}

#left,#right{

position: absolute;

top:0px;

width: 200px;

height: 100%;

}

#left{

left:0px;

background: red;

}

#right{

right:0px;

background: green;

}

#main{

margin:0 210px;background: blue;height: 100%;

}

</style>

<body>

<div id=”left”></div>

<div id=”main”></div>

<div id=”right”></div>

</body>

</html>

2.margin負值法

主體採用雙層標簽,外層DIV寬度100%顯示,且浮動。內層div為真正主體內容,左欄與右欄採用margin負值定位,左欄左浮動,margin-left:-100%,使其正好到達最左端,

<!DOCTYPE html>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

<title>11</title>

<style type=”text/css”>

html,body{margin:0; height:100%;}

#main{width:100%; height:100%; float:left;}

#main #body{margin:0 210px; background:#ffe6b8; height:100%;}

#left,#right{width:200px; height:100%; float:left; background:#a0b3d6;}

#left{margin-left:-100%;}

#right{margin-left:-200px;}

</style>

</head>

<body>

<div id=”main”>

<div id=”body”></div>

</div>

<div id=”left”></div>

<div id=”right”></div>

</body>

</html>

3.自身浮動法:

應用標簽浮動跟隨的特性,左欄左浮動,右欄右浮動,主體直接放後面,實現自適應

<!DOCTYPE html>

<html>

<head>

<meta charset=”utf-8″>

<title>11</title>

<style type=”text/css”>

html,body{margin:0; height:100%;}

#main{height:100%; margin:0 210px; background:#ffe6b8;}

#left,#right{width:200px; height:100%; background:#a0b3d6;}

#left{float:left;}

#right{float:right;}

</style>

</head>

<body>

<div id=”left”></div>

<div id=”right”></div>

<div id=”main”></div>

</body>

</html>

7.gif,png,jpg的區別?

參考: ^圖片特點比較

圖片類型透明性動畫支持損耗性顯示方式
GIF Gif是一種布爾透明類型,它可以是全透明或全不透明,但是它並沒有半透明(alpha 透明) 支持 Gif是一種無損耗的圖像格式,這也意味著你可以對gif圖片做任何操作也不會使圖像質量產生損耗; Gif使用LZW演算法進行壓縮,當壓縮gif的過程中,像素是由上到下水平壓縮的,這也意味著同等條件下,橫向的gif圖片比豎向的gif圖片更小。例如500*10的圖片比10*500的圖片更小 Gif支持可選擇性的間隔漸進顯示; 只有256種顏色的gif圖片不適合作為照片,它適合做對顏色要求不高的圖形。
PNG Png是完全支持alpha透明的(透明,半透明,不透明) 不支持 png是一種無損耗的圖像格式,這意味著png圖片做任何操作也不會使圖像質量產生損耗。這也使得png可以作為jpeg編輯的過渡格式; 像GIF一樣,png也是水平掃描的,這意味著水平重覆顏色比垂直重覆顏色的圖片更小 它支持間隔漸進顯示,但是會使圖片大小更大
JPG 不支持 不支持 除了一些如旋轉(僅僅是90、180、270度旋轉),裁切,從標準類型到先進類型,編輯圖片的原數據之外,所有其它對jpeg圖像的處理都會使它的質量產生損失。所以我們在編輯過程一般用png作為過渡格式 它支持隔行漸進顯示(但是ie瀏覽器並不支持這個屬性,但是ie會在整個圖像信息完全到達的時候顯示)。 由上可以看出Jpeg是最適web上面的攝影圖片和數字照相機中。

綜述:

GIF適合圖形,JPEG適合照片,PNG系列兩種都適合。

PNG相比GIF:

對於相同色值,gif格式圖片會比png32格式圖片小。但png8才是最優的選擇。

PNG 8除了不支持動畫外,PNG8有GIF所有的特點,但是比GIF更加具有優勢的是它支持alpha透明和更優的壓縮。所以,大多數情況下,你都應該用PNG8不是GIF(除了非常小的圖片GIF會有更好的壓縮外)。

PNG相比JPEG:

JPEG比全色PNG具有更加好的壓縮,因此也使得JPEG適合照片,但是編輯JPEG過程中容易造成質量的損失,所以全色PNG適合作為編輯JPEG的過渡格式.

8.什麼是css sprite?優缺點?

CSS Sprites(雪碧圖)就是把網頁中用到的一些背景圖片整合到一張圖片文件中,利用CSS的“background-image”,“background-repeat”,“background-position”來組合進行背景定位。

優點: 減少網頁的http請求,大大提高頁面性能。

缺點:在圖片合併的時候,你要把多張圖片有序的合理的合併成一張圖片,還要留好足夠的空間,防止板塊內出現不必要的背景。修改編輯圖片時也相對較為繁瑣。

9.製作細線表格?

定義CSS:border-collapse屬性,將值設為collapse,合併邊框

10.position:relative,absolute,fixed區別與聯繫?

postion一共有四個可選屬性:static|relative|absolute|fixed,預設是static。

一:relative

relative會導致元素自身位置的相對變化,但不會影響其它元素的位置、大小。

二:absolute

①absolute元素脫離文檔結構(和float元素類似,float元素也會脫離文檔結構)

②absolute元素具有“包裹性”。會使其之前的塊級元素的寬度變為內容的寬度。

③absolute元素具有“跟隨性”。沒有設置top、left的值時,與其前一個元素的top,left值為0。

如果為absolute設置了top、left,absolute元素會根據最近的定位上下文確定位置,瀏覽器會遞歸查找該元素的所有父元素,如果找到一個設置了position:relative/absolute/fixed的元素,就以該元素為基准定位,如果沒找到,就以瀏覽器邊界定位。

三:fixed

其實fixed和absolute是一樣的,唯一的區別在於:absolute元素是根據最近的定位上下文確定位置,而fixed永遠根據瀏覽器確定位置.

11.如何居中一個float:left的元素

主要思路如下:

1.定義父級元素為行級元素,在父級元素之上設定text-align:center

<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<title>Document</title>

</head>

<body >

<div style=”text-align: center;”>

<div style=”display: inline-block;”>

<div style=”float:left;background: green;”>

子元素1

</div>

<div style=”float:left;background: blue;”>

子元素2

</div>

</div>

</div>

</body>

</html>

2.父元素浮動法

在外層包裹一個父元素,使他浮動,相對定位,left:50%;內部元素同樣相對定位,left:-50%;

<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<title>Document</title>

</head>

<body >

<div style=”float:left;position:relative;left:50%;”>

<div style=”float:left;left: -50%;background: green;”>

子元素1

</div>

<div style=”float:left;background: blue;”>

子元素2

</div>

</div>

</body>

</html>

12.Css在各瀏覽器下的相容問題你通常是怎麼來解決的,請分享你的經驗;

解決辦法一般都是平時為知筆記記錄,搜索時熟悉內容找筆記內容+不熟悉的找谷歌。

二.JS部分

1.parseInt 與 parseFloat 的區別?

parseInt 與 parseFloat 是把字元串轉換成整數和浮點數的方法,

二者語法如下

parseInt(string, radix)

parseFloat(string)

parseInt多一個可選的radix數字基數。

兩者的一些參數執行返回結果如下

strparseInt(str)parseFloat(str)
零長度字元串 NaN NaN  
null NaN NaN  
undefined NaN NaN  
.3 0 0.3  
-.3 NaN -0.3  
-3 -3 -3  
3e7 3 30000000  
0xFF 255 0  
0x3e7 999 0  
08 8 8  
3 3 3  
123abc 123 123

2.valueof 與 toString 的區別?

基本上,所有的JS數據類型都擁有這兩種方法(NULL除外),他們倆解決了JS值的運算和顯示問題。

在《javaScript 高級程式設計》一書中描述如下:

toString()——返回對象的原始字元串表示

valueOf()——返回最適合該對象的原始值

一個例子:

<script>

function Money(gold, silver, coin)

{

this.gold = gold;

this.silver = silver;

this.coin = coin;

}

Money.parse = function(value)

{

var coin = parseInt(value % 25);

var silver = parseInt(value / 25 % 20);

var gold = parseInt(value / 500);

return new Money(gold, silver, coin);

}

Money.prototype.valueOf = function( )

{

return ((this.gold * 20) + this.silver) * 25 + this.coin;

}

Money.prototype.toString = function( )

{

return this.gold + “金,” + this.silver + “銀,” + this.coin + “銅”;

}

var money1 = new Money(5, 6, 1);

var money2 = new Money(2, 4, 6);

var money3 = Money.parse(money1 + money2);

alert(money3);//7金,10銀,7銅

</script>

這裡隱式調用了valueOf跟toString,二者並存的情況下,在數值運算中,優先調用了valueOf,字元串運算中,優先調用了toString。比如money1 + money2,調用的就是兩者valueOf之後的值相加,而alert的時候,把money3先toString了一下。

strvalueOf(str)toString(str)
Array Array數組的元素被轉換為字元串,這些字元串由逗號分隔,連接在一起。其操作與 Array.toString 和 Array.join 方法相同。 Array將 Array 的元素轉換為字元串。結果字元串由逗號分隔,且連接起來。  
Boolean Boolean的原始值 Boolean如果 Boolean 值是 true,則返回 “true”。否則,返回 “false”。  
Date Date存儲的時間是從 1970 年 1 月 1 日午夜開始計的毫秒數 UTC。 Date返回日期的文字表示法。Error返回一個包含相關錯誤消息的字元串。  
Function Function函數本身。 Function返回如下格式的字元串,其中 functionname 是被調用 toString 方法函數的名稱: function functionname( ) { [native code] }  
Number Number數字值。 Number返回數字的文字表示。  
Object Object對象本身。這是預設情況。 Object預設返回 “[object objectname]”,其中 objectname 是對象類型的名稱。  
String String字元串值。 String返回 String 對象的值。

3.全等與相等?

相等(==),當且僅當兩個運算符相等時,返回true。在確定兩個運算符時會進行類型轉換。

執行類型轉換的規則如下:

如果一個運算數是 Boolean 值,在檢查相等性之前,把它轉換成數字值。false 轉換成 0,true 為 1。

如果一個運算數是字元串,另一個是數字,在檢查相等性之前,要嘗試把字元串轉換成數字。

如果一個運算數是對象,另一個是字元串,在檢查相等性之前,要嘗試把對象轉換成字元串。

如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字。

全等(===)

只有在無需類型轉換運算數就相等的情況下,才返回 true。

4.break 與 continue 的區別?

break表示跳出迴圈,continue表示結束本次迴圈

5.js的作用域?

js的作用域以函數function來劃分,根據作用域,使得變數存在作用域的概念分為全局變數和局部變數。

6.Array 的 slice 與 splice 的區別?

arrayObject.slice(start,end)

slice() 方法從已有的數組中返回選定的元素,其接收1或2個參數,返回一個新的數組,包含數組下標從 start 到 end(不包括該元素)的 arrayObject 中的元素。(如果沒有指定end參數,那麼切分的數組包含從 start 到數組結束的所有元素。)

如:

var aCloros = [“red”,”green”,”blue”,”yellow”,”purple”];

var aCloros2 = aCloros.slice(1);

var aCloros3 = aCloros.slice(1,4);

alert(aCloros2);//output “green,blue,yellow,purple”

alert(aCloros3);//output “green,blue,yellow”

arrayObject.splice(index,howmany,item1,…..,itemX)

splice() 方法可從數組中添加或刪除項目,然後返回被刪除的項目。

splice() 方法可刪除從 index 處開始的零個或多個元素,howmany表示刪除數量,後面的參數表示向數組中添加的新項目。

var arr = new Array(6)

arr[0] = “red”

arr[1] = “green”

arr[2] = “blue”

arr[3] = “yellow”

arr[4] = “purple”

arr.splice(2,0,”white”) //output red,green,white,blue,yellow,purple

arr.splice(2,1,”white”) //output red,green,white,yellow,purple

7.正則中test 與 match 的區別?

RegExpObject.test(str)

test()方法用於檢測一個字元串是否匹配某個模式.如果字元串str中含有與RegExpObject 匹配的文本,則返回 true,否則返回 false。

//匹配正整數

var patten = /^[1-9]\d*$/;

patten.test(“1498924”) //true

patten.test(“-1498924”) //false

stringObject.match(regexp)

match() 方法可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配。返回指定的值。

var str=”1 + 2 * 3 / 4″

str.match(/\d+/g) //[“1”, “2”, “3”, “4”]

8.如何在js中創建一個對象並繼承他?

function Person(name) {

this.name = name;

}

Person.prototype = {

constructor: Person, //強制聲明構造函數,預設是Object

sayName : function( ) {

alert(this.name);

}

}

var Person1 = new Person(“xiaoming”);

9.什麼是prototype ? 什麼是原型鏈?

而JavaScript中每個對象都有一個內部的鏈接指向另一個對象,這個對象就是原對象的原型(prototype)。這個原型對象也有自己的原型,直到對象的原型為 null 為止。這種一級一級的鏈結構就是原型鏈。

如通過new運算符創建的對象,構造函數.prototype的值就是該對象的原型對象。

var now = new Date();

now對象的原型對象就是Date.prototype。

通過new 一個對象就可以調用裡面的公開的方法,屬性。

10.setTimeout 與 setInterval 的區別?

setTimeout()方法用於在指定的毫秒數後調用函數或計算表達式。

setInterval()方法可按照指定的周期(以毫秒計)來調用函數或計算表達式。它會不停地調用函數,直到 clearInterval() 被調用或視窗被關閉。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的參數。

11.cssText?

cssText的本質就是設置HTML元素的style屬性值。

document.getElementById(“d1”).style.cssText = “color:red; font-size:13px;”;

12.offsetWidth, scrollLeft, scrollHeight?

offsetWidth:元素的寬度(width + padding + border)

scrollLeft:返回和設置當前橫向滾動條的坐標值

scrollWidth:獲取對象的滾動高度。

13.IE的事件與w3c事件的區別?

w3c事件流:

從根文檔(html)開始遍歷所有子節點,如果目標事件的父節點設置為捕獲時觸發,則執行該事件,直到目標被執行,然後再事件冒泡(設置為捕獲時觸發的事件不再被執行)。

ie事件流:

從目標事件被執行,然後再冒泡父節點的事件,直到根文檔。

三.高級部分

1.除了jQuery以外,請寫出你所知道的js框架,試說出不同框架的特點;

Zeptojs:輕量級的適於移動端的針對高級瀏覽器的JavaScript庫(類jQuery)

Underscore.js:一個JavaScript實用庫,提供了一整套函數式編程的實用功能,沒有擴展任何JavaScript內置對象,彌補了部分jQuery沒有實現的功能。

Bootstrap:擁有豐富的Web組件。

Node.js: 跨平臺、可用於伺服器端和網路應用的運行環境;具有事件驅動、單線程運行、非阻塞I/O調用、V8引擎執行代碼的特性。Node.js含有一系列內置模塊,使得程式可以作為獨立伺服器運行,適合在分散式設備上運行的數據密集型的實時應用.

AngularJS: MVVM、模塊化、自動化雙向數據綁定、語義化標簽、依賴註入等等,適用於單頁面、CRUD應用。

ReactJs:基於組件化開發,而且所有組件有其狀態。將DOM封裝為可以相互組合的 Component, 並且將DOM操作抽象為狀態的改變。

2.對於Javascript中OOP的理念,你認為在項目開發中有沒有必要,什麼樣的項目適合前端OOP,請談談你的看法;

我個人認為不太重要,在前端頁面不需要刻意的去追求面向對象。

因為對於面向對象我們需要註意“繼承、多態、封裝、組合”等特性,它們的出發點都是“分離減少關註點”。使程式以最小的代價來適應“關註點”的變化。

但對於前端代碼需要關註的東西與後端存在許多不同,後端程式大多只需關註項目的“數據+行為”——關註點不多且容易預測。而前端則是“數據+行為+展現+交互”,其中多出來的“展現+交互”決定了前端的關註點更多且更加無從預測,除非人為限制減少相關的關註點,讓UI和交互套在一個相對死的範圍內進行,而這樣難免會影響到UI的靈活性,不可避免的面對:“醜,慢,大”等特性。

結合以上,前端層面上做好代碼的分層、解耦、結構化則更優,但做這些事和追求面向對象沒有必然關係。

3.在Javascript開發中,關於性能優化,分享一下你相關的經驗?

對於JS開發個人總結大概如下:

基本原則:

儘可能的減少請求。

代碼開發遵守規範

具體細節:

基本的代碼規範,如JS腳本放在底部載入,儘量寫為外部文件,基本的上線壓縮等

其餘一些細節包括

資源載入

資源載入:首頁載入性能提升

按需載入:靜態資源依賴關係表,lazyload

開發規範

AJAX:緩存AJAX,請求:GET

減少DOM操作

避免全局變數,儘量使用語言本身的構造和內建函數等。

等等。。

具體可參考前端性能優化指南

4.對於模塊開發你是怎麼看的?

前端採用模塊化開發,使得開發體驗大大增強,也使代碼管理更加清晰、規範。主要表現為以下幾點:

減少命名衝突,消除全局變數

一個模塊一個文件,組織更清晰

依賴自動載入,按需載入

其中文件按需載入,依賴自動管理,使得更多精力去關註模塊代碼本身,開發時不需要在頁面上寫一大堆script引用,一個require初始化模塊就搞定。

前端模塊化規範標準:

CommonJs (Node.js)

AMD (RequireJS)

CMD (SeaJS)

也可參考這裡的前部分前端模塊化開發的價值

5.對於Javascript MVC開發你是怎麼看的?分享一下你瞭解的相關信息?

簡單瞭解的採用MVC開發模式的庫包括:

Backbone.js——優點:社區較好,缺點:抽象較弱。

Ember.js——優點:豐富的模板系統,擁有複合視圖和UI綁定;缺點:相對較新,還不夠成熟

Angular.js——優點:對模板範圍和控制器設計有很好的考慮,擁有依賴註入系統,支持豐富的UI綁定語法。缺點:代碼的模塊性不強,視圖的模塊化也不夠。

其餘瞭解的不多

但平常做項目的時候,特別是大項目,一定要把MVC的概念放在業務場景里多想想。MVC並不是終極思想。它有它適合的地方,但也有其局限的一面。還有前端MVC的話,對應的後臺最好是REST風格的介面。還有並不是越複雜的前端業務,越緊迫地需要MVC。一定要多想多看。

MVC的一大問題在於:MVC開發模式會將本身簡單的系統大大增加結構的複雜性,並且降低效率。

但整套前端開發其實本質上可以看做一個大大的MVC架構:

Model: HTML/XHTML中的信息

View: Style sheet

Controller: EMAScripts等等腳本

6.AJAX是什麼? AJAX跨域的解決辦法?

AJAX即“Asynchronous JavaScript and XML”(非同步的JavaScript與XML技術),是一種創建互動式網頁應用的網頁開發技術。通過在後臺與伺服器進行少量數據交換,AJAX 可以使網頁實現非同步更新。意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。

AJAX跨域解決:

使用中間層過渡的方式:

就是在AJAX與不同域的伺服器進行通訊的中間加一層過渡,這一層過渡可以是PHP、JSP、c++等任何具備網路通訊功能的語言,由中間層向不同域的伺服器進行讀取數據的操作。

使用<script>標簽

利用<script>標簽中src來請求,因為<script>標簽的src屬性不存在跨域的問題。

jsonp

本文固定鏈接: http://www.i7758.com/archives/2377.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先Ajax的不刷新頁面提交數據,現在應用非常廣泛,廢話不多說馬上進主題!! 基本上瀏覽器能接收的信息,Ajax都可以接收,ex:字元串,html標簽,css標簽,xml格式內容,json格式內容等等..... <script> // IE瀏覽器 if(ActiveXObject){ // 微軟目前
  • JS中function的一些淺見
  • 今天總結了下Node.js的Formidable模塊的使用,下麵做一些簡要的說明。 1) 創建Formidable.IncomingForm對象 var form = new formidable.IncomingForm() 2) form.encoding = 'utf-8' 設置表單域的編碼
  • 1. 首先嘛,你得在瀏覽器里輸入要網址: 2. 瀏覽器查找功能變數名稱的IP地址 導航的第一步是通過訪問的功能變數名稱找出其IP地址。DNS查找過程如下: 瀏覽器緩存 – 瀏覽器會緩存DNS記錄一段時間。 有趣的是,操作系統沒有告訴瀏覽器儲存DNS記錄的時間,這樣不同瀏覽器會儲存個自固定的一個時間(2分鐘到30分鐘
  • 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy : 'Country'"> <td>{{ $index + 1 }}</td> <td ng-if=
  • html5功能強大,數字和顏色輸入框例子 效果:http://hovertree.com/code/html5/rxujb6g8.htm 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="te
  • DOM樹由文檔中的所有節點(元素節點、文本節點、註釋節點等)所構成的一個樹結構,DOM樹的解析和構建是瀏覽器要實現的關鍵功能。既然DOM樹是一個樹結構,那麼我們就可以使用遍歷樹結構的相關方法來對DOM樹進行遍歷,同時DOM2中的"Traversal"模塊又提供了兩種新的類型,從而可以很方便地實現DO...
  • 下麵提一下jQuery的each方法的幾種常用的用法 複製代碼 代碼如下: var arr = [ "one", "two", "three", "four"]; $.each(arr, function(){ alert(this); }); 上面這個each輸出的結果分別為:one,two,th
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...