uni-app代碼基本包括js,vue,css.在app端支持原生渲染nvue,可編譯的kotlin和swift
掌握js就可以進行不同應用的開發
頁面文件遵循 Vue 單文件組件 (SFC) 規范,即每個頁面是一個.vue文件
.vue文件是一個自定義的文件類型,用類HTML語法描述一個VUE組件
.vue文件包含三種類型的頂級語言塊<template>? <script> <style>
vue-loader可以解析文件,提取每個語言塊,用loader處理,獎他們組成一個ESMoudle 默認導出一個vue.js組件選項對象
vue-loader?和?loader?在計算機科學和軟件開發領域有各自的含義和用途。
vue-loader
定義:
vue-loader是一個webpack的加載器(loader),主要用于將Vue組件的單文件(.vue文件)轉換為JavaScript模塊。這個過程中,它會解析.vue文件,分離出其中的模板(template)、腳本(script)和樣式(style),并將它們分別交給webpack和相關loader進行處理。特性和用途:
- 編譯模板:vue-loader能夠處理.vue文件中的HTML模板,將其轉換為可執行的JavaScript代碼。
- 處理樣式:它支持使用CSS預處理器(如Less、Sass)來處理樣式,并允許使用scoped CSS來避免樣式沖突。
- 熱重載:在開發過程中,vue-loader支持組件的熱重載,即在不刷新頁面的情況下更新組件的修改。
- 模塊化:支持使用ES2015(ES6)及更高版本的模塊語法來導入和導出Vue組件。
總結:vue-loader是Vue.js開發中不可或缺的工具,它極大地簡化了Vue組件的開發和構建過程,使得開發者能夠更加專注于業務邏輯的實現。
loader
定義:
在計算機科學和軟件開發中,loader通常指的是一個程序或模塊,它負責在運行時或編譯時加載和準備其他程序或數據以供使用。在不同的上下文中,loader可能有不同的具體實現和用途。
- 在操作系統中,loader可能指的是負責加載操作系統或應用程序到內存中的程序。
- 在Web開發中,特別是在使用webpack這樣的模塊打包工具時,loader指的是一種用于處理特定類型文件的腳本。這些腳本會在webpack的打包過程中被調用,用于將文件轉換為模塊,以便webpack可以進一步處理它們。
webpack中的loader:
- webpack是一個現代JavaScript應用程序的靜態模塊打包器(module bundler)。在webpack中,loader是處理模塊內某個文件的預處理器。loader可以將文件從不同的語言(如TypeScript、CoffeeScript)轉換為JavaScript,或將內聯圖像轉換為DataURL。loader甚至允許你直接在JavaScript模塊中import CSS文件!
樣式
-
默認匹配:
/\.css$/
。 -
一個
.vue
文件可以包含多個<style>
標簽。 -
<style>
標簽可以有scoped
或者module
屬性 (查看 scoped CSS和 CSS Modules) 以幫助你將樣式封裝到當前組件。具有不同封裝模式的多個<style>
標簽可以在同一個組件中混合使用。 -
任何匹配
.css
文件 (或通過它的lang
特性指定的擴展名) 的 webpack 規則都將會運用到這個<style>
塊的內容中。
在Vue.js中,<style>
?標簽可以擁有?scoped
?屬性,但標準的HTML和CSS并不支持?module
?屬性直接用于?<style>
?標簽。不過,Vue.js 提供了一個類似于模塊作用域樣式的功能,通過單文件組件(.vue 文件)和特定的loader(如vue-loader)來實現,這通常被稱為 CSS Modules。
scoped 屬性
- 作用:
scoped
?屬性是Vue.js特有的,用于確保樣式只應用于當前組件的元素。Vue.js通過給組件的元素添加唯一的數據屬性(如?data-v-xxxx
),并在CSS選擇器中添加對應的屬性選擇器,來實現樣式的局部作用域。 - 使用場景:當你想要確保組件的樣式不會影響到全局或其他組件時,
scoped
?屬性非常有用。
CSS Modules
- 實現方式:雖然Vue.js本身不直接在?
<style>
?標簽上提供?module
?屬性,但你可以通過配置vue-loader來啟用CSS Modules。這通常涉及到在?<style>
?標簽中添加一個特殊的?module
?屬性(雖然這不是HTML的一部分,但vue-loader會識別并處理它),或者簡單地通過在?.vue
?文件中配置vue-loader來自動啟用CSS Modules,而不需要在?<style>
?標簽中添加任何特殊屬性。 - 作用:CSS Modules 提供了一種將CSS類名映射到唯一標識符的方法,從而避免了全局命名沖突。每個類名都會映射到一個唯一的哈希值,這個哈希值被用作實際的類名。在JavaScript中,你可以通過導入的樣式對象來訪問這些映射后的類名。
- 使用場景:當你想要更細粒度地控制CSS的作用域,或者當你想要在JavaScript中動態引用樣式類名時,CSS Modules非常有用。
總結
- Vue.js的?
<style>
?標簽支持?scoped
?屬性以實現樣式的局部作用域。 - CSS Modules功能不是通過直接在?
<style>
?標簽上添加?module
?屬性來實現的,而是通過vue-loader的配置來啟用的。 - 你可以根據項目的具體需求選擇使用?
scoped
?樣式或CSS Modules,或者兩者結合使用。