前端基礎 JS Vue3 Ajax

一、JS

alert(' .... ') //彈出框

console.log(' ....... ') //輸出到控制臺瀏覽器

JS引入方式:1、內部腳本:將JS代碼定義在HTML頁面中位于<script></script>標簽之間

? ? ? ? ? ? ? ? ? ? ? ?2、外部腳本:將JS代碼寫在外部JS文件中,在HTML頁面中使用

????????????????????????????????<script src = ' ./js/eventDemo.js'></script>引入? ? ? (src就是js的地址)

在js中引入其他js:import { printLog } from "地址",{ }中間是其他js文件中的函數,這就是模塊化JS

要想使用JS文件中的函數:1、這個函數必須加上export 關鍵字

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2、在html頁面中,必須加上type=”module“代表使用的時模塊化的js

html中:
<script src = "js/eventDemo.js" type="module"> 
</script>eventDemo.js:
import {printlog} from "./utils.js" ;//click: 鼠標點擊事件document.querySelector('#b2').addEventListener('click', () => {printlog("我被點擊了...");})utils.js:
//export使代碼能被別的地方使用
export function printlog(msg){console.log(msg);
}

1、函數

函數:是被設計用來執行特定任務的代碼塊,方便程序的封裝復用。

通過function關鍵字進行定義,語法:

  //1. 函數的定義-具名函數function add(a, b) {return a + b;}let sum = add(10, 20);alert(sum); //2. 函數的定義-匿名函數//2.1 函數表達式let add = function(a,b){return a-b;}let result = add(20,10);alert(result);//2.2 箭頭函數let add = (a , b)=> { return a + b;}let result = add(100,200);alert(result);

2、自定義對象

let 對象名 = {屬性名1:屬性值1,屬性名2:屬性值2,屬性名3:屬性值3,方法名: function (形參列表) { }}如:let user = {name: 'Tom',age: '18',gender: '男',sing: function () {alert(this.name + '悠悠地唱著最炫的民族風')}//方法簡化方式:sing() {alert(this.name+'唱著最炫的民族風')}
}調用格式:對象名.屬性名;
對象名.方法名();console.log(user.name);
user.sing();

注:在自定義對象時盡量不要使用箭頭函數,因為箭頭函數中的this并不指向當前對象,而是指向當前對象的父級對象。

3、JSON

JSON.stringify (...) 將JS對象轉為JSON格式的字符串

JSON.parse (...)?JSON格式的字符串轉為JS中的對象?

    let user = {name: 'Tom',age: '18',gender: '男',sing() {alert(this.name + '悠悠地唱著最炫的民族風');}}//js對象——>json字符串(JSON.stringify)alert(JSON.stringify(user));//json字符串——>js對象(JSON.parse)  let personJson = '{"name":"Tom","age":"18","gender":"男"}';alert(JSON.parse(personJson).name);

4、DOM

將HTML文件中,所有的元素都封裝成了JS對象,采用面向對象的方式來操作頁面中的所有的元素。

Document:整個文檔對象? ? 整個HTML

ELement:元素對象? ? ? ? ? ? ?每一個html的標簽都會封裝成一個元素對象 <html> <head> <body>等

Attribute:屬性對象? ? ? ? ? ? ? 如 href等屬性

Text:文本對象? ? ? ? ? ? ? ? ? ? ?文本內容

Comment:注釋對象? ? ? ? ? ? 注釋

DOM操作核心思想:將網頁中所有的元素當作對象來處理。

操作步驟:

  • 獲取要操作的DOM元素對象
  • 操作DOM對象的屬性或方法(查看文檔或AI)? ?

document.querySelector('選擇器') 根據css選擇器來獲取匹配到的第一個元素

document.querySelectorAll('選擇器')? ? ? ? ? ? ? ? ? ? ? ? ? ? ?獲取匹配到的所有元素

5、事件監聽

語法:事件源.addEventListener('事件類型',事件觸發執行的函數);

三要素:事件源:哪個DOM元素觸發了事件

? ? ? ? ? ? ? 事件類型:用什么方式觸發,比如:鼠標單擊 click

? ? ? ? ? ? ? 事件觸發執行的函數:要做什么事

 <input type="button" id="btn1" value="點我一下試試1"><input type="button" id="btn2" value="點我一下試試2"><script>//事件監聽,可以多次綁定同一事件document.querySelector('#btn1').addEventListener('click', function () {alert('試試就試試');});document.querySelector('#btn1').addEventListener('click', function () {alert('我還就得試試就試試');});</script>

常見事件:

  • click:鼠標點擊
  • mouseenter:鼠標移入
  • mouseleave:鼠標移出

  • keydown:鍵盤按下觸發
  • keyup:鍵盤抬起觸發

  • focus:獲得焦點觸發
  • blur:失去焦點觸發

  • input:用戶輸入時觸發
  • submit:表單提交時觸發

二、Vue3?

Vue是一款用于構建用戶界面的漸進式的JavaScript框架。

1、使用Vue

  • 引入Vue模塊
  • 創建Vue程序的實例化,控制視圖的元素
  • 準備元素,被Vue控制
<body><div id="app"><!-- {{}}插值表達式渲染數據 --><h1>{{message}}</h1><h1>{{count}}</h1></div><script type="module">//引入模塊import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';//創建應用實例(調用createApp函數,在里面傳遞一個對象{})createApp({// 準備數據//對象中聲明方法data,之后聲明方法的返回值,返回值就是所要定義的數據 ,要返回對象,返回值就是對象,對象中聲明變量,變量的值就是數據 */data() {return {count: 100,message: 'Hello Vue!'}},}).mount('#app');/* 作用:創建的createApp實例,接管了id為"app"的div標簽 */</script>

2、常用指令

v-for :? <tr v-for="(item, index) in items" :key="item.id">{{item}}</tr>

  • item 為遍歷的數組
  • item 為遍歷出來的元素
  • index 為索引/下標 從0開始;可以省略 省略index語法:v-for = " item in items"?
  • key:給元素添加唯一標識,便于vue進行列表項的正確排序復用,提升渲染性能,推薦使用id作為key。

v-bind:? ? v-bind:屬性名=“屬性值”??

? ? ?簡化::屬性名= “屬性值”

v-if:? ? ? v-if=" 表達式?"? ? ? 要么渲染,要么不渲染,不頻繁切換的場景

v-show:? v-show = '' 表達式?''? ?全都渲染,控制顯示與隱藏,用于頻繁切換的場景

v-model:?v-model = " 變量名?''

v-on: v-on:事件名 = “方法名”

? ? ? ?簡寫: @事件名 = “ ... ”

 <!-- 表格主體內容 --><tbody><!-- 想讓哪個標簽循環展示多次,就在哪個標簽上使用v-for指令 --><tr v-for="(e, index) in empList" :key="e.id"><td>{{index + 1}}</td><td>{{e.name}}</td><td>{{e.gender ==1?'男' : '女'}}</td><!-- 插值表達式不能出現在標簽內部 --><!-- <td><img class="avatar" src="{{e.image}}" alt="{{e.name}}"></td> --><td><img class="avatar" v-bind:src="e.image" :alt="e.name"></td><!-- v-if 控制元素的顯示與隱藏 --><td><span v-if="e.job == 1">班主任</span><span v-else-if="e.job == 2">講師</span><span v-else-if="e.job == 3">學工主管</span><span v-else-if="e.job == 4">教研主任</span><span v-else-if="e.job == 5">咨詢師</span><span v-else>其他</span></td><!-- v-show 控制元素的顯示與隱藏<td><span v-show="e.job == 1">班主任</span><span v-show="e.job == 2">講師</span><span v-show="e.job == 3">學工主管</span><span v-show="e.job == 4">教研主任</span><span v-show="e.job == 5">咨詢師</span></td> --><td>{{e.entrydate}}</td><td>{{e.updatetime}}</td><td class="action-buttons"><button type="button">編輯</button><button type="button">刪除</button></td></tr></tbody></table>
//使用v-model分別將數據雙向綁定
<input type="text" id="name" name="name" v-model="searchForm.name" placeholder="請輸入姓名">
<select id="gender" name="gender" v-model="searchForm.gender">
<select id="position" name="position" v-model="searchForm.job"><button type="button" v-on:click="search">查詢</button><button type="button" @click="clear">清空</button><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'//創建應用實例(調用createApp函數,在里面傳遞一個對象{})createApp({ // 準備數據data() {return {searchForm: {//定義數據模型,采集員工搜索表單數據   ,是一個對象name: '',gender: '',job: ''}}},//聲明methods屬性,在里面定義方法methods: {//方法search(){//將搜索條件,輸出到控制臺console.log(this.searchForm);},clear(){this.searchForm = {name: '',gender: '',job: ''}}}</script>

createApp中data是聲明數據的

? ? ? ? ? ? ? ? ? ? 與data平級的method: {} 是定義方法。

三、Ajax

作用:通過ajax可以向服務器端發送請求,并獲取服務器響應的數據。

? ? ? ? ? ?異步交互:可以在不重新加載整個頁面的情況下,與服務器交換數據并更新部分網頁的技術。

<body><input type="button" value="獲取數據GET" id="btnGet"><input type="button" value="操作數據POST" id="btnPost"><script src="js/axios.js"></script> //這里的js是已經提供的,所以自己引入官方js文件<script>//發送GET請求document.querySelector('#btnGet').addEventListener('click', () => {///* 事件監聽器 */axios({method: 'GET',url: 'https://mock.apifox.cn/m1/3083103-0-default/emps/list',}).then((result) => {  //成功回調函數console.log(result.data);  }).catch((error) => {   //失敗回調函數console.log(error);})})//發送POST請求document.querySelector('#btnPost').addEventListener('click', () => {axios({method: 'POST',url: 'https://mock.apifox.cn/m1/3083103-0-default/emps/update',data: 'id=1'  //post請求方式,請求體的數據}).then((result) => {   //成功回調函數console.log(result.data);}).catch((error) => {   //失敗回調函數console.log(error);})})</script>
</body>

另一種寫法(推薦寫法):

axios.請求方式(url [,data[,config]])

<body><input type="button" value="獲取數據GET" id="btnGet"><input type="button" value="操作數據POST" id="btnPost"><script src="js/axios.js"></script><script>//發送GET請求document.querySelector('#btnGet').addEventListener('click', () => {axios.get(' https://mock.apifox.cn/m1/3083103-0-default/emps/list').then((result) => {console.log(result.data);}).catch((error) => {console.log(error);})console.log('++++++++++++++++++++++++++++');})//發送POST請求document.querySelector('#btnPost').addEventListener('click', () => {axios.post('https://mock.apifox.cn/m1/3083103-0-default/emps/update', 'id=1').then((result) => {console.log(result.data);}).catch((error) => {console.log(error);})})</script>
</body>

使用async & await使異步變為同步

await關鍵字只在async函數內有效,await關鍵字取代then函數,就不用寫成功失敗回調了。

  methods: {//方法async search() { //async(加在search前) + await(加在axios請求服務器前)讓異步操作變為同步//讓異步變成同步操作,即會等待服務器響應let result = await axios.get(`https://web-server.itheima.net/emps/list?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`)this.empList = result.data.data }

?Vue生命周期

生命周期八個階段:每觸發一個生命周期事件,會自動執行一個生命周期方法(鉤子方法)

聲明與生命周期相關的鉤子方法,需要與data,method 平級,

必須掌握的 mounted? 在這個方法中可以發送請求,獲取數據,用于加載就查詢一次

 //鉤子函數mounted(){//當頁面加載完成后,自動調用search方法this.search();}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90436.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何解決pip安裝報錯ModuleNotFoundError: No module named ‘notebook’問題

【Python系列Bug修復PyCharm控制臺pip install報錯】如何解決pip安裝報錯ModuleNotFoundError: No module named ‘notebook’問題 一、摘要 在使用 PyCharm 進行 Python 開發時&#xff0c;常常需要通過 pip install 安裝第三方包。但有時即便已經安裝成功&#xff0c;運行代…

一、Vue概述以及快速入門

什么是VueVue的快速入門代碼&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue快速入門</title><script src"js/vue.js"></script> </head> <bod…

模型的存儲、加載和部署

定義損失函數并以此訓練和評估模型 存儲模型可以只存儲state_dict或模型參數&#xff0c;每當需要部署經過訓練的模型時&#xff0c;創建模型的對象并從文件中加載參數&#xff0c;這是 Pytorch 創建者推薦的方法。 目錄 模型的存儲、加載 模型的部署 模型的存儲、加載 承接…

Java學習第七十部分——微服務架構

目錄 一、前言提要 二、核心優勢 三、核心技術棧 四、構建步驟 五、困難挑戰 六、總結歸納 一、前言提要 Java 微服務架構是一種使用 Java 技術棧構建分布式系統的方法論&#xff0c;它將單一的大型應用程序分解為一組小型、獨立、松耦合、可獨立部署和擴展的服務。每個服…

六邊形滾動機器人cad【7張】三維圖+設計書明說

摘 要 機械制造業是國家的重要產業,隨著時代的發展,智能化越來越在生活中變得普遍,工業的發展深深的影響著一個國家的經濟發展。全球經濟的發展帶領著機械工業在不斷的進步。隨著國外先進技術在我國的傳播,也影響著我國技術的發展,在全球經濟的大環境的推動下,大型四邊形…

人形機器人加快先進AI機器人開發

物理AI的新時代通用人形機器人專為快速適應現有的以人類為中心的城市和工業工作空間而構建&#xff0c;用以承擔枯燥、重復性或對體力要求高的工作任務。這些機器人正在從工廠車間走向醫療健康機構&#xff0c;通過自動化幫助人類工作&#xff0c;緩解勞動力短缺問題。但是&…

AI 驅動開發效能躍升:企業級智能開發全流程優化方案?

企業軟件開發正面臨 “三高困境”&#xff1a;需求變更頻率高、人力成本占比高、線上故障風險高。破解這些難題的核心在于構建 AI 驅動的全流程智能開發體系&#xff0c;通過系統化效能優化實現開發能力升級。? 需求分析作為開發起點&#xff0c;常因理解偏差導致后期返工。A…

時序數據庫 TDengine × Ontop:三步構建你的時序知識圖譜

在做設備預測性維護或能源管理分析時&#xff0c;你是否也曾思考過&#xff1a;如何才能讓機器“理解”我們收集的大量時序數據&#xff1f;工業現場的數據是結構化的&#xff0c;而語義分析、知識推理卻往往需要 RDF 等圖譜格式。換句話說&#xff0c;“會說話”的數據更聰明&…

Android啟動圖不拉伸且寬占滿屏幕

Android啟動圖不拉伸且寬占滿屏幕 一般啟動圖的做法&#xff1a; start_app_bg.xml <?xml version"1.0" encoding"utf-8"?> <layer-list xmlns:android"http://schemas.android.com/apk/res/android"><item><shape>&l…

rust-方法語法

方法語法 方法類似于函數&#xff1a;我們用 fn 關鍵字和一個名稱來聲明它們&#xff0c;它們可以有參數和返回值&#xff0c;并且包含一些在從其他地方調用該方法時運行的代碼。與函數不同&#xff0c;方法是在結構體&#xff08;或枚舉、trait 對象&#xff0c;分別在第6章和…

【C++】C++ 的入門語法知識1

本文主要講解C語言的入門知識&#xff0c;包括命名空間、C的輸入與輸出、缺省參數以及函數重載。 目錄 1 C的第一個程序 2 命名空間 1&#xff09; 命名空間存在的意義 2&#xff09; 命名空間的定義 3&#xff09; 命名空間的使用 3 C的輸出與輸入 1&#xff09; C中…

SpringBoot6-10(黑馬)

JWT令牌簡介&#xff1a;1.JWT全稱:JSON Web Token(https://iwt.io/)定義了一種簡潔的、自包含的格式&#xff0c;用于通信雙方以json數據格式安全的傳輸信息。2.組成: >第一部分:Header(頭)&#xff0c;記錄令牌類型、簽名算法等。例如:("alg":“HS256",“t…

智能制造場景195個術語的16個分類

說明&#xff1a;《智能制造典型場景參考指引&#xff08;2025年版&#xff09;》日前&#xff0c;由工信部辦公廳正式發布&#xff0c;將成為眾多制造型企業的工作綱領 1. 工廠數字化規劃設計&#xff08;1.1&#xff09;&#xff1a;在電腦上用專業軟件設計工廠布局、規劃生產…

[論文閱讀] 人工智能 + 軟件工程 | 微信閉源代碼庫中的RAG代碼補全:揭秘工業級場景下的檢索增強生成技術

微信閉源代碼庫中的RAG代碼補全&#xff1a;揭秘工業級場景下的檢索增強生成技術 論文標題&#xff1a;A Deep Dive into Retrieval-Augmented Generation for Code Completion: Experience on WeChatarXiv:2507.18515 A Deep Dive into Retrieval-Augmented Generation for Co…

RabbitMQ—仲裁隊列

上篇文章&#xff1a; RabbitMQ集群搭建https://blog.csdn.net/sniper_fandc/article/details/149312481?fromshareblogdetail&sharetypeblogdetail&sharerId149312481&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 Raft一致性算法…

[2025CVPR-目標檢測方向] CorrBEV:多視圖3D物體檢測

1. ?研究背景與動機? 論文關注自動駕駛中相機僅有的多視圖3D物體檢測&#xff08;camera-only multi-view 3D object detection&#xff09;問題。盡管基于鳥瞰圖&#xff08;BEV&#xff09;的建模近年來取得顯著進展&#xff08;如BEVFormer和SparseBEV等基準模型&#xf…

oracle 數據庫批量變更數據 將a表字段批量更新為b表字段

需求&#xff1a;將excel表中的數據批量更新到 taccoinfo表中vc_broker字段0、備份&#xff1a;create table taccoinfo0724 as select vc_custno ,vc_broker from taccoinfo 1、創建臨時表&#xff1a; create table taccoinfo0724_1 as select vc_custno ,vc_broker from…

vim-xcode 項目常見問題解決方案

vim-xcode 項目常見問題解決方案 項目基礎介紹 vim-xcode 是一個開源項目&#xff0c;旨在通過 Vim 編輯器與 Xcode 項目進行交互。該項目允許開發者在 Vim 中直接構建、測試和運行 Xcode 項目&#xff0c;從而提高開發效率。vim-xcode 主要使用 Vimscript 編寫&#xff0c;并依…

個性化網頁計數器

需要一個服務器環境來存放我們的計數器腳本和數據庫。對于初學者來說&#xff0c;PHP和MySQL是一個不錯的組合&#xff0c;因為它們易于學習且廣泛應用。接下來&#xff0c;我們開始編寫PHP腳本。這個腳本的主要任務是接收來自網頁的請求&#xff0c;并將訪問信息存儲到數據庫中…

詳解力扣高頻SQL50題之1683. 無效的推文【入門】

傳送門&#xff1a;1683. 無效的推文 題目 表&#xff1a;Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中&#xff0c;tweet_id 是這個表的主鍵。 content 只…