整合營(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一区二区三区| 亚洲日韩AV一区二区三区中文| 国产精品美女一区二区三区| 日本一区二区三区精品国产| 亚洲日韩精品一区二区三区| 成人中文字幕一区二区三区| 国产精品福利一区| 国产在线精品一区二区三区不卡| 无码人妻精品一区二区三区在线 | 日韩爆乳一区二区无码| 中文字幕无线码一区二区| 美女视频免费看一区二区 | 国产精品亚洲综合一区在线观看| 国产精久久一区二区三区 | 小泽玛丽无码视频一区| 国产在线无码一区二区三区视频| 麻豆一区二区免费播放网站| 在线播放一区二区| 中文字幕av人妻少妇一区二区 | 成人区人妻精品一区二区不卡| 国产av一区二区三区日韩| 亚洲国产成人久久一区WWW | 中文字幕亚洲一区二区三区| 精品一区二区三区四区| 亚洲欧美一区二区三区日产| 亚洲AV无码一区二区三区国产 | 一区二区免费国产在线观看| 熟女精品视频一区二区三区| 色国产在线视频一区| 精品一区二区三区免费| 国产一区二区好的精华液| 国产成人无码AV一区二区在线观看| 中文字幕av人妻少妇一区二区 |