整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML-JavaScript基礎(chǔ)(非常詳細(xì))

          HTML-JavaScript基礎(chǔ)(非常詳細(xì))

          么是JavaScript

          JavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)的、并具有安全性能的腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開(kāi)發(fā),常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過(guò)嵌入在HTML中來(lái)實(shí)現(xiàn)自身的功能的。

          JavaScript特點(diǎn)

          是一種解釋性腳本語(yǔ)言(代碼不進(jìn)行預(yù)編譯)。

          主要用來(lái)向HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)頁(yè)面添加交互行為。

          可以直接嵌入HTML頁(yè)面,但寫(xiě)成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離

          跨平臺(tái)特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行(如Windows、Linux、Mac、Android、iOS等)。

          JavaScript組成


          JavaScript日常用途

          1、嵌入動(dòng)態(tài)文本于HTML頁(yè)面。

          2、對(duì)瀏覽器事件做出響應(yīng)。

          3、讀寫(xiě)HTML元素

          4、在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)。

          5、檢測(cè)訪客的瀏覽器信息。

          6、控制cookies,包括創(chuàng)建和修改等。

          7、基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。

          JavaScript的基本結(jié)構(gòu)

          <script type="text/javascript">
           <!—
           JavaScript 語(yǔ)句;
           —>
          </script >
          


          示例:

          ……
          <title>初學(xué)JavaScript</title>
          </head>
          <body>
          <script type="text/javascript">
           document.write("初學(xué)JavaScript");
           document.write("<h1>Hello,JavaScript</h1>");
          </script>
          </body>
          </html>
          


          <script>…</script>可以包含在文檔中的任何地方,只要保證這些代碼在被使用前已讀取并加載到內(nèi)存即可

          JavaScript的執(zhí)行原理


          網(wǎng)頁(yè)中引用JavaScript的方式

          1、使用<script>標(biāo)簽

          2、外部JS文件

          <script src="export.js" type="text/javascript"></script>
          


          3.直接在HTML標(biāo)簽中

          <input name="btn" type="button" value="彈出消息框" 
           onclick="javascript:alert('歡迎你');"/>
          


          JavaScript核心語(yǔ)法:


          1. 變量

          ①先聲明變量再賦值

          var width;
          width=5;
          var - 用于聲明變量的關(guān)鍵字
          width - 變量名
          


          ②同時(shí)聲明和賦值變量

          var catName="皮皮";
          var x, y, z=10;
          


          ③不聲明直接賦值【一般不使用】

          width=5;
          


          變量可以不經(jīng)聲明而直接使用,但這種方法很容易出錯(cuò),也很難查找排錯(cuò),不推薦使用。

          2. 數(shù)據(jù)類(lèi)型

          ①u(mài)ndefined:示例:var width;

          變量width沒(méi)有初始值,將被賦予值undefined

          ②null:表示一個(gè)空值,與undefined值相等

          ③number:

          var iNum=23; //整數(shù)

          var iNum=23.0; //浮點(diǎn)數(shù)

          ④Boolean:true和false 但是JS會(huì)把他們解析成1;0

          ⑤String:一組被引號(hào)(單引號(hào)或雙引號(hào))括起來(lái)的文本 var string1="This is a string";

          3. typeof運(yùn)算符

          typeof檢測(cè)變量的返回值;typeof運(yùn)算符返回值如下:

          ①u(mài)ndefined:變量被聲明后,但未被賦值.

          ②string:用單引號(hào)或雙引號(hào)來(lái)聲明的字符串。

          ③boolean:true或false。

          ④number:整數(shù)或浮點(diǎn)數(shù)。

          ⑤object:javascript中的對(duì)象、數(shù)組和null。

          avaScript 程序不能獨(dú)立運(yùn)行,它需要被嵌入 HTML 中,然后瀏覽器才能執(zhí)行 JavaScript 代碼。通過(guò) <script> 標(biāo)簽將 JavaScript 代碼引入到 HTML 中,有兩種方式:
          1.內(nèi)部方式
          內(nèi)部方式是通過(guò)<script>標(biāo)簽包裹JavaScript代碼,從而引入HTML頁(yè)面中,示例代碼如下:

          <!DOCTYPE html>
           <html>
           <head>
             <meta charset="UTF-8">
             <title>JavaScript 基礎(chǔ) - 引入方式</title>
           </head>
           <body>
             <!-- 內(nèi)聯(lián)形式:通過(guò) script 標(biāo)簽包裹 JavaScript 代碼 -->
             <script>
               alert('嗨,歡迎來(lái)傳智播學(xué)習(xí)前端技術(shù)!')
             </script>
           </body>
           </html>

          2.外部形式

          一般將 JavaScript 代碼寫(xiě)在獨(dú)立的以 .js 結(jié)尾的文件中,然后通過(guò) <script>標(biāo)簽的 <src>屬性引入,示例代碼如下:

          // demo.js
          document.write('嗨,歡迎來(lái)傳智播學(xué)習(xí)前端技術(shù)!')
          <!DOCTYPE html>
           <html>
           <head>
             <meta charset="UTF-8">
             <title>JavaScript 基礎(chǔ) - 引入方式</title>
           </head>
           <body>
             <!-- 外部形式:通過(guò) script 的 src 屬性引入獨(dú)立的 .js 文件 -->
             <script src="demo.js"></script>
           </body>
           </html>

          注意:如果 script 標(biāo)簽使用 src 屬性引入了某 .js 文件,那么 標(biāo)簽的代碼會(huì)被忽略!!!如下代碼所示:

          在.NET Core中運(yùn)行JavaScript代碼,目前已經(jīng)有很多實(shí)現(xiàn)方案。

          但是,如果你希望在純JavaScript環(huán)境中運(yùn)行.NET Core代碼呢?

          那么,DotNetJS可能對(duì)你有所幫助。

          DotNetJS

          DotNetJS可以將C#項(xiàng)目編譯為與任何環(huán)境兼容的單文件JavaScript庫(kù),無(wú)論是Web瀏覽器,Node.js還是自定義限制空間,如VS Code的Web擴(kuò)展,都可以正常使用它。

          該解決方案基于兩個(gè)主要組件:

          • JavaScript/dotnet-runtime(npm) 使用已編譯的C#程序集和.NET運(yùn)行時(shí)WebAssembly模塊,以在JavaScript中提供C# 操作性層。該庫(kù)與環(huán)境無(wú)關(guān) - 它不依賴(lài)于特定于平臺(tái)的API,如瀏覽器DOM或節(jié)點(diǎn)模塊,并且可以作為CommonJS或ECMAScript模塊導(dǎo)入,也可以通過(guò)瀏覽器中的腳本標(biāo)記使用。
          • DotNet/dotNetJS(NuGet) 在C#中提供JavaScript互操作性層,并通過(guò)MSBuild任務(wù)將項(xiàng)目輸出打包到單文件JavaScript庫(kù)中。生成的庫(kù)包含使用項(xiàng)目程序集初始化的dotnet運(yùn)行時(shí),并準(zhǔn)備用作打包的C#項(xiàng)目的互操作性層。

          Demo

          1. 創(chuàng)建項(xiàng)目

          使用VS2022創(chuàng)建一個(gè)控制臺(tái)項(xiàng)目,修改項(xiàng)目文件,文件內(nèi)容如下:

          <Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
           <PropertyGroup>
            <TargetFramework>net6.0</TargetFramework>
            <EmitSourceMap>true</EmitSourceMap>
            <EmitTypes>true</EmitTypes>
           </PropertyGroup>
           <ItemGroup>
            <PackageReference Include="DotNetJS" Version="0.4.0" />
           </ItemGroup>
          </Project>
          
          • 指定SDK為Microsoft.NET.Sdk.BlazorWebAssembly
          • 引用DotNetJS Nuget包

          2. 實(shí)現(xiàn)C#代碼

          實(shí)現(xiàn)Program.cs,代碼如下:

          
          using DotNetJS;
          using Microsoft.JSInterop;
          using System;
          using System.Threading.Tasks;
          namespace HelloDotnetJS;
          public partial class Program
          { 
              public static void Main()
              {
                  Console.WriteLine($"HelloDotnetJS 初始化!");
              }
              [JSFunction]  
              public static partial string GetBaseAddress();
              [JSInvokable]
              public async static Task<WeatherForecast[]> Demo()
              {
                  var uri = new Uri(GetBaseAddress());
                  Console.WriteLine(uri);
                  var json = await new System.Net.Http.HttpClient { BaseAddress = uri }
                      .GetStringAsync("weather.json");
                  var forecasts = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherForecast[]>(json);
                  return forecasts;
              }
          }
          

          Demo方法的具體邏輯如下:

          • 獲取網(wǎng)站根路徑,使用[JSFunction]指定具體值來(lái)源于JS傳入
          • 訪問(wèn)網(wǎng)站根路徑下的weather.json文件
          • 反序列化json,調(diào)用Newtonsoft驗(yàn)證第三方庫(kù)能否正常使用
          • 返回WeatherForecast集合

          在終端窗口執(zhí)行dotnet publish,上述代碼將會(huì)編譯成JS代碼文件dotnet.js

          3. 實(shí)現(xiàn)JS代碼

          創(chuàng)建demo.html,代碼如下:

          <meta charset="UTF-8">
          <script src="dotnet.js"></script>
          <script>
              //定義GetBaseAddress實(shí)現(xiàn)
              dotnet.HelloDotnetJS.GetBaseAddress = () => window.location.protocol + "//" + window.location.host;
              window.onload = async function () {
                  //初始化
                  await dotnet.boot();
           
                  console.log("開(kāi)始執(zhí)行Demo");
                  const str = await dotnet.HelloDotnetJS.Demo();
                  console.log(str);
              };
          </script>
          

          4. 運(yùn)行效果

          將所有文件部署到網(wǎng)站上,例如http://localhost:5678/:

          weather.json的文件內(nèi)容如下:

          [
            {
              "date": "2018-05-06",
              "temperatureC": 1,
              "summary": "My IO"
            },
            {
              "date": "2018-05-07",
              "temperatureC": 14,
              "summary": "Bracing"
            }
          ]
          

          用瀏覽器訪問(wèn)http://localhost:5678/demo.html,在控制臺(tái)窗口可以看到代碼運(yùn)行正常:

          結(jié)論

          DotNetJS目前還不完善,生成的JS代碼文件dotnet.js尺寸較大,demo代碼就有11M。


          主站蜘蛛池模板: 亚洲国产精品一区二区第四页| 精品久久久中文字幕一区| 亚洲日韩中文字幕一区| 无码一区二区三区免费视频| 亚洲乱码av中文一区二区| 久久国产三级无码一区二区| 精品无码人妻一区二区三区18| 亚洲av一综合av一区| 中文字幕一区在线观看| 国产成人高清精品一区二区三区| 亚洲av无码一区二区三区天堂古代 | 激情内射日本一区二区三区| 性色av无码免费一区二区三区| 人妻无码久久一区二区三区免费| 国产综合无码一区二区辣椒| 一区二区三区免费高清视频| 日韩精品无码人妻一区二区三区| 成人一区专区在线观看| 在线视频国产一区| 国产精品综合一区二区| 欧洲精品码一区二区三区| 在线观看日韩一区| 色综合视频一区二区三区| 一区二区三区久久精品| 精品国产一区二区三区久久蜜臀 | 国产一在线精品一区在线观看| 一区二区三区视频免费| 国产高清在线精品一区二区| 综合久久一区二区三区| 久久久久久人妻一区精品| 日韩精品乱码AV一区二区| 一区二区三区日韩| 亚洲国产AV一区二区三区四区 | 精品人妻码一区二区三区| 麻豆国产一区二区在线观看| 国产对白精品刺激一区二区| 国产精品盗摄一区二区在线| 青娱乐国产官网极品一区| 国产vr一区二区在线观看| 久久一区二区三区精品| 国产未成女一区二区三区 |