Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
avaScript 語句
在 HTML 中,JavaScript 語句是由 web 瀏覽器“執行”的“指令”。
var x, y, z; // 語句 1
x = 22; // 語句 2
y = 11; // 語句 3
z = x + y; // 語句 4
計算機程序是由計算機“執行”的一系列“指令”。
在編程語言中,這些編程指令被稱為語句。
JavaScript 程序就是一系列的編程語句。
JavaScript 語句由以下構成:
值、運算符、表達式、關鍵詞和注釋。
這條語句告訴瀏覽器在 id="demo" 的 HTML 元素中輸出 "Hello Kitty.":
document.getElementById("demo").innerHTML = "Hello Kitty.";
大多數 JavaScript 程序都包含許多 JavaScript 語句。
這些語句會按照它們被編寫的順序逐一執行。
注釋:JavaScript 程序(以及 JavaScript 語句)常被稱為 JavaScript 代碼。
分號分隔 JavaScript 語句。
請在每條可執行的語句之后添加分號:
a = 5;
b = 6;
c = a + b;
如果有分號分隔,允許在同一行寫多條語句:
a = 5; b = 6; c = a + b;
您可能在網上看到不帶分號的例子。
提示:以分號結束語句不是必需的,但我們仍然強烈建議您這么做。
JavaScript 會忽略多個空格。您可以向腳本添加空格,以增強可讀性。
下面這兩行是相等的:
var person = "Bill";
var person="Bill";
在運算符旁邊( = + - * / )添加空格是個好習慣:
var x = y + z;
為了達到最佳的可讀性,程序員們常常喜歡把代碼行控制在 80 個字符以內。
如果 JavaScript 語句太長,對其進行折行的最佳位置是某個運算符:
document.getElementById("demo").innerHTML =
"Hello Kitty.";
JavaScript 語句可以用花括號({...})組合在代碼塊中。
代碼塊的作用是定義一同執行的語句。
您會在 JavaScript 中看到成塊組合在一起的語句:
function myFunction() {
document.getElementById("demo").innerHTML = "Hello Kitty.";
document.getElementById("myDIV").innerHTML = "How are you?";
}
注釋:在本教程中我們為代碼塊用了 4 個空格的縮進。
提示:您將稍后在本教程中學到更多有關函數的內容。
JavaScript 語句常常通過某個關鍵詞來標識需要執行的 JavaScript 動作。
下面的表格列出了一部分將在教程中學到的關鍵詞:
關鍵詞描述break終止 switch 或循環。continue跳出循環并在頂端開始。debugger停止執行 JavaScript,并調用調試函數(如果可用)。do ... while執行語句塊,并在條件為真時重復代碼塊。for標記需被執行的語句塊,只要條件為真。function聲明函數。if ... else標記需被執行的語句塊,根據某個條件。return退出函數。switch標記需被執行的語句塊,根據不同的情況。try ... catch對語句塊實現錯誤處理。var聲明變量。
注釋:JavaScript 關鍵詞指的是保留的單詞。保留詞無法用作變量名。
日常開發中,為了方便數據的輸入和輸出,JavaScript提供了一些常用的輸入輸出語句,具體如表1-3所示。
表1常用的輸入輸出語句
類型 | 語句 | 說明 |
輸入 | prompt() | 用于在瀏覽器中彈出輸入框,用戶可以輸入內容 |
輸出 | alert() | 用于在瀏覽器中彈出警告框 |
document.write() | 用于在網頁中輸出內容 | |
console.log() | 用于在控制臺中輸出信息 |
接下來將分別演示document.write0、console.log0和promptO的使用。
1. document.write()
document.write0的輸出內容中如果含有HTML標簽,會被瀏覽器解析。下面利用documenL.write0在頁面中輸出“我是document.write0語句!”,示例代碼如下。
document.write('我是document.write()語句!');
2. console.log()
利用console.log0語句在控制臺輸出“我是console.log0語句!”,示例代碼如下。
console.log('我是console.log()語句!');
console:.log0的輸出結果需要在瀏覽器的控制臺中查看。在Chrome 瀏覽器中按“F12”鍵(或在網頁空白區域右擊,在彈出的菜單中選擇“檢查”)啟動開發者工具,然后切換到“Console”(控制臺)面板,即可看到console.log0的輸出結果。
3.prompt()
利用prompt0語句實現在頁面中彈出一個帶有提示信息的輸入框,示例代碼如下。
prompt(請輸入姓名:');
上述示例代碼運行后,將在頁面中彈出一個輸人框并提示用戶“請輸人姓名:”提示框。
上流行的解決方案是將assetsPublicPath: '/'改成'./',下面說一下這個解決方案的弊端:
通常頁面空白的問題出現大多數是由于Spring Boot端配置了server.servlet.context-path,上下文改變了css, js等文件的訪問路徑,文件無法加載導致index.html顯示空白。'/'改成'./'是將絕對路徑變為相對路徑,可以動態適應Spring Boot端上下文的改變,這是為什么這個解決方案起作用的原因。
Vue項目部署在Spring Boot出現的另一個常見問題是當刷新瀏覽器的時候出現white label, 也就是404錯誤,解決的方案基本是把error page配置成為Vue的index.html。
這兩個解決方案有沖突的地方,當router出現子路徑的時候刷新瀏覽器,error page會指向Vue的index.html頁面,此時頁面中訪問css,js文件的路徑是相對路徑,也就是上下文路徑+router子路徑,這將導致css,js再次無法正常加載,這就是相對路徑的弊端。
由于router會出現子路徑,因此必須保證assetsPublicPath為絕對路徑,下面講一下保持絕對路徑的解決方案:
1 假設Spring Boot端配置server.servlet.context-path: api, 對應Vue的/config/index.js中assetsPublicPath: '/'改成 '/api/'
2 router/index.js中配置base: '/api/', 這是保證瀏覽器刷新時上下文參數和router跳轉路徑一致。
3 對于Ajax請求需要配置baseURL, 如果使用Axios, 可以采用如下方法在main.js中配置
// http request 攔截器 Axios.interceptors.request.use( config => { if (localStorage.getItem('id_token')) { config.headers.Authorization = localStorage.getItem('id_token') } config.baseURL = '/api' return config }, err => { return Promise.reject(err) })
4 另外需要注意的一點,按照Spring Boot默認配置, 在Vue端/config/index.js中assetsSubDirectory: 'static'要改變為其它字符,比如:'content', 'vue', 'api'等等。
5 試過將assetsSubDirectory配置為空,它和另一個css圖片加載的方案有沖突,圖片加載解決方案是在/build/util.js中加一行配置
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader',
publicPath: '../../'
})
結尾附上Spring Boot端將error page指向Vue的index.html代碼:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.ErrorPage; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; @Configuration public class ServletConfig { private static final Logger logger = LoggerFactory.getLogger(ServletConfig.class); @Bean public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() { logger.info("come to 404 error page"); return factory -> { ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html"); factory.addErrorPages(error404Page); }; } }
對前端全棧工程師感興趣的同學關注我的頭條號,并在后臺私信發送關鍵字:“前端”即可獲取免費的前端全棧工程師學習資料
知識體系已整理好,歡迎免費領取。還有面試視頻分享可以免費獲取。關注我,可以獲得沒有的架構經驗哦!!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。