ð± ã¢ãã€ã«ç«¯æ«å¯Ÿå¿ãã¹ããã©ã¯ãã£ã¹ - 1ã€ã®ã³ãŒãã§å šãŠã®ããã€ã¹ã«å¯Ÿå¿ïŒ â
ð¯ ããªãã® Vant ã¢ããªãæ§ã ãªããã€ã¹ã§å®ç§ã«è¡šç€ºããããã§ããïŒãã®ãããã§ãã·ã§ãã«ãªã¢ãã€ã«å¯Ÿå¿ã¬ã€ããããªãã®ç§å¯å µåšã«ãªããŸãïŒå°ããªç»é¢ã®ã¹ããŒããã©ã³ãã倧ããªç»é¢ã®ã¿ãã¬ãããå€ã iPhone SE ããææ°ã®æãããã¿ã¹ã¯ãªãŒã³ãŸã§ãå®ç§ãªãœãªã¥ãŒã·ã§ã³ãçšæããŠããŸãã
ð± ãã¥ãŒããŒãèšå® - äžäºåŒå€Žé£ã ãããã®äžæ©ã¯ç°¡åïŒ â
ð¯ åºæ¬çãªãã¥ãŒããŒãèšå® â
ã¢ãã€ã«å¯Ÿå¿ã®ç¬¬äžæ¥ã¯ããã¥ãŒããŒãïŒViewportïŒãæ£ããèšå®ããããšã§ããããã¯ãããã€ã¹ã®ç»é¢ãµã€ãºãæ£ããèªèãããããã®éèŠãªèšå®ã§ããå°ãè€éã«èŠãããããããŸããããå®ã¯éåžžã«ç°¡åã§ãã
<!-- ãã¥ãŒããŒãèšå® - ãããå¿
èŠãªéæ³ã®åªæïŒ -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">ãã©ã¡ãŒã¿ã®è§£èª¬ ðïŒ
width=device-widthïŒãã©ãŠã¶ãŒã«ãããã€ã¹ã®ç»é¢å¹ ã«åãããŠè¡šç€ºããŠãã ããããšäŒããŸããinitial-scale=1.0ïŒåæã®æ¡å€§çã1ã«èšå®ããŸããããã«ãããããŒãžãå ã®ãµã€ãºã§è¡šç€ºãããŸããmaximum-scale=1.0ïŒæå€§ã®æ¡å€§çã1ã«èšå®ããŸããããã«ããããŠãŒã¶ãŒãããŒãžãæåã§æ¡å€§ããªãããã«ããŸããuser-scalable=noïŒãŠãŒã¶ãŒãããŒãžãæåã§æ¡å€§çž®å°ã§ããªãããã«ããŸããããã«ãããããŒãžã®è¡šç€ºãå®å®ããŸãã
ð ãã€ãããã¯ãã¥ãŒããŒãèšå® - ããã€ã¹ã«åãããŠæé©å â
æã ãããã€ã¹ã®ç¹æ§ã«å¿ããŠãã¥ãŒããŒããåçã«èª¿æŽããå¿ èŠããããŸããäŸãã°ãã¹ããŒããã©ã³ã®å Žåã¯ãããŒãžãå°ãã衚瀺ããŠãŠãŒã¶ãŒäœéšãåäžãããããšãã§ããŸãããããå®çŸããããã«ã以äžã® JavaScript ã³ãŒãã䜿çšããŸãã
// ãã€ãããã¯ãã¥ãŒããŒãèšå® - ããã€ã¹ã«åãããŠæé©å
function setViewport() {
const viewport = document.querySelector('meta[name="viewport"]')
const scale = 1 / window.devicePixelRatio
if (viewport) {
viewport.content = `width=device-width, initial-scale=${scale}, maximum-scale=${scale}, user-scalable=no`
}
}
// ããŒãžããŒãæã«èšå®ïŒåããŠã®èšªåè
ã«ã¯è¯ãå°è±¡ãäžããïŒ
window.addEventListener('load', setViewport)
// ç»é¢å転æã«åèšå®ïŒæšªçžŠå±åãæ¿ããå¿é
ãªãïŒ
window.addEventListener('orientationchange', () => {
setTimeout(setViewport, 100) // å°ãåŸ
ã£ãŠããèšå®ïŒããã€ã¹ã®å¿çãåŸ
ã€ïŒ
})ð ãµã€ãºé©å¿æŠç¥ - äžã€ã®æé©ãªæ¹æ³ãããéžã³ãã ããïŒ â
1. ð¯ Rem é©å¿æŠç¥ - äŒçµ±çã§ä¿¡é Œæ§ãé«ãæ¹æ³ â
Rem ã¯ã¢ãã€ã«å¯Ÿå¿ã®ãããã©ã³ããšèšããã§ããããã«ãŒãèŠçŽ ã®ãã©ã³ããµã€ãºã«åºã¥ãçžå¯Ÿåäœã§ã倿°ã®ãããžã§ã¯ãã§æ€èšŒæžã¿ãä¿¡é Œæ§ãé«ãã§ãïŒ
äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ïŒäžçºã§å®äºïŒïŒ
npm install postcss-pxtorem lib-flexible -SPostCSS èšå®ïŒèªå倿ãæéçãïŒïŒ
// postcss.config.js
module.exports = {
plugins: {
'postcss-pxtorem': {
rootValue: 37.5, // ãã¶ã€ã³åçš¿ã®å¹
/10 (375/10) - é»éæ¯
unitPrecision: 5, // remã¯å°æ°ç¹ä»¥äž5æ¡ãŸã§ïŒåå粟床ïŒ
propList: ['*'], // ãã¹ãŠã®ããããã£ã倿ïŒç¶²çŸ
ïŒ
selectorBlackList: ['.van-'], // vantã³ã³ããŒãã³ããç¡èŠïŒããã«ä»»ããïŒ
replace: true,
mediaQuery: false,
minPixelValue: 2 // 2pxæªæºã¯å€æããªãïŒå°ããããã®ã§äžèŠïŒ
}
}
}flexibleã®å°å ¥ïŒããŒãžãæè»ã«ïŒïŒ
// main.js
import 'lib-flexible' // äžè¡ã³ãŒãã§å®ç§ã«ïŒ
// ãŸãã¯èªäœãããå ŽåïŒDIY 粟ç¥ïŒ
function setRem() {
const baseSize = 37.5 // åºæºãµã€ãº
const scale = document.documentElement.clientWidth / 375
document.documentElement.style.fontSize = Math.min(scale * baseSize, 54) + 'px'
}
setRem()
window.addEventListener('resize', setRem) // ãŠã£ã³ããŠãµã€ãºå€æŽæã«åèšç®2. ð Vw å¯Ÿå¿æŠç¥ - æ°æä»£ã®éžæè¢ â
Vw ã¯ã¢ãã€ã«å¯Ÿå¿ã®ãæ°æãã§ããã¥ãŒããŒãå¹ ã«åºã¥ãCSSåäœã§ããã粟確ãã€çŸä»£çã§ãã銬è»ããèªåè»ãžã®é²åã®ãããªãã®ã§ãïŒ
äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ïŒ
npm install postcss-px-to-viewport-8-plugin -DPostCSS èšå®ïŒç²Ÿç¢ºãªå¯Ÿå¿ïŒïŒ
// postcss.config.js
module.exports = {
plugins: {
'postcss-px-to-viewport-8-plugin': {
viewportWidth: 375, // ãã¶ã€ã³åçš¿ã®å¹
ïŒiPhoneåºæºïŒ
viewportHeight: 667, // ãã¶ã€ã³åçš¿ã®é«ã
unitPrecision: 3, // 倿åŸã®å°æ°äœæ°ïŒååïŒ
viewportUnit: 'vw', // 倿å
ã®ãã¥ãŒããŒãåäœ
selectorBlackList: ['.ignore', '.hairlines'], // 倿ããªãã¯ã©ã¹å
minPixelValue: 1, // 1pxæªæºã¯å€æããªã
mediaQuery: false, // ã¡ãã£ã¢ã¯ãšãªã§ã¯å€æããªã
exclude: [/node_modules/] // node_modulesãé€å€ïŒèª€ã£ãŠå€æããªãããã«ïŒ
}
}
}3. ð± ã¬ã¹ãã³ã·ãæŠç¥ - å€å žã¯æ°žé ã«æä»£é ãã§ã¯ãªã â
CSSã¡ãã£ã¢ã¯ãšãªã«åºã¥ãäŒçµ±çãªã¬ã¹ãã³ã·ããã¶ã€ã³ã¯ãã¹ã€ã¹ã¢ãŒããŒãã€ãã®ããã«ãäŒçµ±çã§ããå®çšçã§ãïŒ
/* ãã¬ãŒã¯ãã€ã³ãã·ã¹ãã - æ§ã
ãªããã€ã¹ã«åãããŠã«ã¹ã¿ãã€ãº */
/* ã¢ãã€ã«ç«¯æ«ïŒå°ãããŠçŸããïŒ */
@media (max-width: 767px) {
.container {
padding: 16px;
font-size: 14px;
}
}
/* ã¿ãã¬ãã端æ«ïŒå€§ãããå°ããããªãäžåºŠããïŒ */
@media (min-width: 768px) and (max-width: 1023px) {
.container {
padding: 24px;
font-size: 16px;
}
}
/* ãã¹ã¯ããã端æ«ïŒéå€§ïŒ */
@media (min-width: 1024px) {
.container {
padding: 32px;
font-size: 18px;
max-width: 1200px;
margin: 0 auto; // äžå€®è¡šç€ºãåªé
}
}ðš Vant ã³ã³ããŒãã³ãé©å¿ - ã³ã³ããŒãã³ãããã䜿ãããã â
ðïž CSS 倿°ã«ã¹ã¿ãã€ãº - äžçºã§èŠãç®ãå€æŽ â
CSS 倿°ã䜿ã£ãŠ Vant ã³ã³ããŒãã³ãã®èŠãç®ãç°¡åã«ã«ã¹ã¿ãã€ãºã§ããŸããã¢ãã€ã«ããã€ã¹ã§ããã¹ã¯ãããããã€ã¹ã§ããæé©ãªè¡šçŸãæäŸããŸãã
/* ã¢ãã€ã«æé©åã®Vant倿° - æ³šææ·±ãèª¿æŽ */
:root {
/* ãã©ã³ããµã€ãºïŒé®®æã§èªã¿ãããïŒ */
--van-font-size-xs: 10px;
--van-font-size-sm: 12px;
--van-font-size-md: 14px;
--van-font-size-lg: 16px;
/* ã¹ããŒã¹ã·ã¹ãã ïŒå¿«é©ã§èªç¶ïŒ */
--van-padding-xs: 8px;
--van-padding-sm: 12px;
--van-padding-md: 16px;
--van-padding-lg: 24px;
/* ã³ã³ããŒãã³ãã®é«ãïŒã¿ããããããïŒ */
--van-button-default-height: 44px; // ã¢ããã«æšå¥šã®æå°ã¿ããã¿ãŒã²ãã
--van-cell-line-height: 24px;
--van-nav-bar-height: 46px;
}
/* å°ããªã¹ã¯ãªãŒã³å¯Ÿå¿ (< 375px) - å°ããã¹ã¯ãªãŒã³ãŠãŒã¶ãŒã®ããã« */
@media (max-width: 374px) {
:root {
--van-font-size-md: 13px;
--van-padding-md: 14px;
--van-button-default-height: 40px;
}
}
/* 倧ããªã¹ã¯ãªãŒã³å¯Ÿå¿ (> 414px) - ã¹ããŒã¹ãååã«æŽ»çš */
@media (min-width: 415px) {
:root {
--van-font-size-md: 15px;
--van-padding-md: 18px;
--van-button-default-height: 48px;
}
}ð§ ã³ã³ããŒãã³ããµã€ãºå¯Ÿå¿ - ã€ã³ããªãžã§ã³ãã¬ã¹ãã³ã¹ â
ã³ã³ããŒãã³ããã¹ã¯ãªãŒã³ãµã€ãºã«å¿ããŠã€ã³ããªãžã§ã³ãã«èª¿æŽããŸãããããã©ã³ã¹ãã©ãŒããŒã®ããã«æè»ã§ãïŒ
<template>
<div class="mobile-layout">
<!-- ãã¿ã³ã°ã«ãŒã察å¿ïŒãµã€ãºèªç±ïŒ -->
<div class="button-group">
<van-button size="small">å°ãããŠç²Ÿå·§</van-button>
<van-button size="normal">äžåºŠãã</van-button>
<van-button size="large">é倧</van-button>
</div>
<!-- ã°ãªããã¬ã€ã¢ãŠã察å¿ïŒã€ã³ããªãžã§ã³ããªé
çœ®ïŒ -->
<van-grid :column-num="gridColumns" :gutter="16">
<van-grid-item v-for="item in 4" :key="item" :text="`ã°ãªãã${item}`" />
</van-grid>
</div>
</template>
<script setup>
import { ref, computed, onMounted, onUnmounted } from 'vue'
const screenWidth = ref(window.innerWidth)
// ã¬ã¹ãã³ã·ãã°ãªããåæ°ïŒã€ã³ããªãžã§ã³ãèšç®ïŒ
const gridColumns = computed(() => {
if (screenWidth.value < 375) return 2 // å°ããã¹ã¯ãªãŒã³ã¯2åãã³ã³ãã¯ãã¬ã€ã¢ãŠã
if (screenWidth.value < 414) return 3 // äžéã¹ã¯ãªãŒã³ã¯3åããã©ã³ã¹ã®åããçŸãã
return 4 // 倧ããªã¹ã¯ãªãŒã³ã¯4åãã¹ããŒã¹ãååã«æŽ»çš
})
// ã¹ã¯ãªãŒã³ãµã€ãºã®å€åãç£èŠïŒåžžã«æé©ãªç¶æ
ãç¶æïŒ
const handleResize = () => {
screenWidth.value = window.innerWidth
}
onMounted(() => {
window.addEventListener('resize', handleResize)
})
onUnmounted(() => {
window.removeEventListener('resize', handleResize)
})
</script>ð 1px ããŒããŒè§£æ±ºç - 现éšãæåãå·Šå³ãã â
é«è§£å床ã¹ã¯ãªãŒã³ã§ã¯ã1pxã®ããŒããŒã2px以äžå€ªã衚瀺ãããããšããããŸããããã§ã¯ãç©èº«è¡ããå¿ èŠã§ãïŒ
âš Transform çž®å°æ¹æ³ - æ£ç¢ºãªå¶åŸ¡ â
/* å
šããŒããŒïŒå蟺ãå²ãïŒ */
.hairline-border {
position: relative;
}
.hairline-border::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 200%;
height: 200%;
border: 1px solid #ebedf0;
transform: scale(0.5); // ååã«çž®å°ãå®ç§ïŒ
transform-origin: 0 0;
pointer-events: none;
box-sizing: border-box;
}
/* åäžããŒããŒïŒç²Ÿç¢ºãªã¿ãŒã²ããïŒ */
.hairline-top::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: #ebedf0;
transform: scaleY(0.5); // Y軞ã®ã¿ãçž®å°
transform-origin: 0 0;
}ð Box-shadow æ¹æ³ - å¥ã®ã¢ãããŒã â
/* box-shadowã§ããŒããŒãæš¡å£ïŒå·§åŠãªä»£æ¿æ¡ïŒ */
.shadow-border {
box-shadow: 0 0 0 0.5px #ebedf0 inset;
}
.shadow-border-bottom {
box-shadow: 0 -0.5px 0 0 #ebedf0 inset;
}ð§ ããã©ãŒãã³ã¹æé©å - ã¢ããªã空é£ã°ã â
ðŒïž ç»åå¯Ÿå¿ - é®®æã§é«é â
<!-- ã¬ã¹ãã³ã·ãç»åïŒ1ã€ã®ç»åã§è€æ°ã®çšéïŒ -->
<img
srcset="image@1x.jpg 1x, image@2x.jpg 2x, image@3x.jpg 3x"
src="image@1x.jpg"
alt="ã¬ã¹ãã³ã·ãç»å"
>
<!-- Vant é
å»¶èªã¿èŸŒã¿ïŒå¿
èŠãªæã«ããŒãïŒ -->
<van-image
v-lazy="imageUrl"
:width="100"
:height="100"
fit="cover"
/>ð ã¿ããæé©å - æ»ãããªäœéš â
/* ã¿ãããã£ãŒãããã¯ã®æé©åïŒã«ã¯ã€ãããªããïŒ */
.touch-element {
-webkit-tap-highlight-color: transparent; // ã¿ãããã€ã©ã€ããåé€
-webkit-touch-callout: none; // é·æŒãã¡ãã¥ãŒãç¡å¹ã«ãã
-webkit-user-select: none; // ããã¹ãéžæãç¡å¹ã«ãã
user-select: none;
}
/* ã¹ã¯ããŒã«æé©åïŒçµ¹ã®ããã«æ»ããïŒ */
.scroll-container {
-webkit-overflow-scrolling: touch;
overflow-scrolling: touch;
}
/* ããŒãžã®æ¡å€§ã鲿¢ïŒå®å®ãç¶æïŒ */
.no-zoom {
touch-action: manipulation;
}ð± ããã€ã¹äºææ§ - å šãŠã®ã·ããªãªãã«ã㌠â
ð äžè¬çãªããã€ã¹ãã¬ãŒã¯ãã€ã³ã - æµãç¥ãå·±ãç¥ã â
| ããã€ã¹ã¿ã€ã | ã¹ã¯ãªãŒã³å¹ | 察å¿ãã€ã³ã | ãŠãŒã¶ãŒæ¯ç |
|---|---|---|---|
| iPhone SE | 320px | æå°å¹ ãã³ã³ãã¯ãã¬ã€ã¢ãŠã | 5% |
| iPhone 12 | 390px | äž»æµãµã€ãºãæšæºã¬ã€ã¢ãŠã | 35% |
| iPhone 12 Pro Max | 428px | 倧ç»é¢ããã€ã¹ãåºã ãšããã¬ã€ã¢ãŠã | 20% |
| Android äž»æµ | 360px | æ±çšå¯Ÿå¿ãµã€ãº | 40% |
ð¡ïž ã»ãŒããšãªã¢å¯Ÿå¿ - ããŒã«ã¬ã¹ã¹ã¯ãªãŒã³ãåé¡ãªã â
/* iOS ããŒã«ã¬ã¹ã¹ã¯ãªãŒã³å¯Ÿå¿ïŒããŒã«ãå®ç§ã«é¿ããïŒ */
.safe-area-top {
padding-top: constant(safe-area-inset-top); // iOS 11.0-11.2
padding-top: env(safe-area-inset-top); // iOS 11.2+
}
.safe-area-bottom {
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
/* å®å
šãªã»ãŒããšãªã¢ïŒå蟺ä¿è·ïŒ */
.safe-area-full {
padding:
env(safe-area-inset-top)
env(safe-area-inset-right)
env(safe-area-inset-bottom)
env(safe-area-inset-left);
}𧪠ãã¹ããšãããã° - äžå šãæã â
ð ïž ãããã°ããŒã«ã®ãããã â
Chrome DevTools - éçºè ã®ã¹ã€ã¹ã¢ãŒããŒãã€ã
- ããã€ã¹ã·ãã¥ã¬ãŒã¿ïŒæ§ã ãªããã€ã¹ãèªç±ã«åãæ¿ãïŒ
- ã¬ã¹ãã³ã·ããã¶ã€ã³ã¢ãŒãïŒãªã¢ã«ã¿ã€ã ã§å¹æã確èªïŒ
- ãããã¯ãŒã¯å¶éãã¹ãïŒåŒ±ããããã¯ãŒã¯ç°å¢ãæš¡å£ïŒ
vConsole - ã¢ãã€ã«ç«¯æ«ã®ãããã°ç¥æ§
javascript// ã¢ãã€ã«å®æ©ãããã°ïŒã¹ããã§ãã³ã³ãœãŒã«ãèŠããïŒ import VConsole from 'vconsole' if (process.env.NODE_ENV === 'development') { new VConsole() // éçºç°å¢ã§æå¹å }Lighthouse - ããã©ãŒãã³ã¹åæã®å°éå®¶
- ã¢ãã€ã«ããã©ãŒãã³ã¹åæïŒå šæ¹äœå¥åº·èšºæïŒ
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹è©äŸ¡ïŒUX ã¹ã³ã¢ãªã³ã°ïŒ
- ãã¹ããã©ã¯ãã£ã¹ã¢ããã€ã¹ïŒããã®ã¬ã€ãã³ã¹ïŒ
â ãã¹ããã§ãã¯ãªã¹ã - äžã€ãæ¬ ãããªã â
- [ ] ãã¥ãŒããŒãèšå®ãæ£ããïŒåºæ¬èšå®ïŒ
- [ ] ãã©ã³ããµã€ãºãé©åïŒæå°12pxãèŠåä¿è·ïŒ
- [ ] ã¿ããã¿ãŒã²ãããååã«å€§ããïŒæå°44pxãæã«åªããïŒ
- [ ] 瞊暪åè»¢ãæ£åžžïŒå転åé¡ãªãïŒ
- [ ] 1pxããŒããŒãæ£ãã衚瀺ïŒçްéšå®ç§ïŒ
- [ ] ç»åã®ããŒããšè¡šç€ºãæ£åžžïŒèŠèŠå¹æïŒ
- [ ] ã¹ã¯ããŒã«ããã©ãŒãã³ã¹ãã¹ã ãŒãºïŒæäœãæ»ããïŒ
- [ ] ã»ãŒããšãªã¢å¯Ÿå¿ãå®å šïŒããŒã«ã¬ã¹ã¹ã¯ãªãŒã³äºæïŒ
ð¡ ãã¹ããã©ã¯ãã£ã¹ãŸãšã - çµéšã®è©± â
é©åãªå¯Ÿå¿æŠç¥ãéžæ ð¯
- æ°èŠãããžã§ã¯ãã¯VwæŠç¥ãæšå¥šïŒçŸä»£çïŒ
- æ¢åãããžã§ã¯ãã¯RemæŠç¥ãå¯ïŒå®å®ä¿¡é ŒïŒ
- ç°¡åãªãããžã§ã¯ãã¯ã¬ã¹ãã³ã·ãïŒããã«å§ããããïŒ
åçãªãã¥ãŒããŒããèšå® ð±
- ãã¥ãŒããŒãèšå®ãæ£ããããšã確èªïŒæåã®äžæ©ãéèŠïŒ
- åç調æŽãèæ ®ïŒç¹æ®ãªç¶æ³ã«å¯Ÿå¿ïŒ
ã¿ããäœéšãæé©å ð
- é©åãªã¿ããã¿ãŒã²ãããµã€ãºãèšå®ïŒ44pxããå§ããïŒ
- ã¹ã¯ããŒã«ããã©ãŒãã³ã¹ãæé©åïŒæ»ãããªäœéšïŒ
1pxããŒããŒãåŠç ð
- transformæ¹æ³ãåªå 䜿çšïŒäºææ§è¯å¥œïŒ
- box-shadowãä»£æ¿æ¡ãšããŠïŒå¹æãè¯ãïŒ
è€æ°ã®ããã€ã¹ã§ãã¹ã ð§ª
- äž»æµããã€ã¹ãã«ããŒïŒiPhoneãAndroidïŒ
- 極端ãªãµã€ãºã«ã泚ç®ïŒè¶ å°åã¹ã¯ãªãŒã³ãè¶ å€§åã¹ã¯ãªãŒã³ïŒ
ããã©ãŒãã³ã¹æé©å â¡
- ç»åã®é å»¶èªã¿èŸŒã¿ãåççã«äœ¿çšïŒããŒã¿éãç¯çŽïŒ
- ã¿ããæé©åãæå¹ã«ïŒäœéšãåäžïŒ
ð ãŸãšã â
ããã§ãšãããããŸãïŒãã®è©³çްãªã¢ãã€ã«å¯Ÿå¿ã¬ã€ããéããŠãããªãã¯æ§ã ãªããã€ã¹ã§Vantã¢ããªãå®ç§ã«è¡šç€ºããç§èš£ããã¹ã¿ãŒããŸããããã¥ãŒããŒãèšå®ãããµã€ãºå¯Ÿå¿ãããã©ãŒãã³ã¹æé©åããããã€ã¹äºææ§ãŸã§ããã¹ãŠã®çްéšãæ³šææ·±ãèšèšãããŠããŸãã
åªããã¢ãã€ã«ã¢ããªã¯ãåãªãæ©èœã®å®è£ ã ãã§ãªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®èžè¡ã§ãããããšãå¿ããªãã§ãã ããããã¹ãŠã®ãã¯ã»ã«ãèŒããããã¹ãŠã®ã¿ãããçµ¹ã®ããã«æ»ããã«ããŸãããïŒð
ð é¢é£ã³ã³ãã³ã â
ã¢ãã€ã«éçºã®ã¹ãã«ãããæ·±ãçè§£ãããã§ããïŒãããã®ããã¥ã¡ã³ããããªãã®éçºã®æ ããã䟿å©ã«ããŸãïŒ
- ð ã¯ã€ãã¯ã¹ã¿ãŒã - ãŒããããããžã§ã¯ããæ§ç¯
- ð ãã¹ããã©ã¯ãã£ã¹ - çµéšã®ãŸãšããšãã¯ããã¯å ±æ
- ð Vue3 çµ±å - ã¢ãã³éçºã®å®ç§ãªããŒãããŒ
- ðš ããŒãã«ã¹ã¿ãã€ãº - ç¬èªã®ããžã¥ã¢ã«ã¹ã¿ã€ã«ãäœãäžãã
- â¡ ããã©ãŒãã³ã¹æé©å - ã¢ããªãé«éåãããŠãŒã¶ãŒäœéšãåäžããã
- ð TypeScript ã¬ã€ã - åå®å šãªéçºã®æ
- ð¯ ãã¶ã€ã³ã¬ã€ã - çµ±äžããããã¶ã€ã³èšèª
- ð Vant 4 - ææ°æ©èœã®ç޹ä»
- ðŠ Vant Weapp - ããããã°ã©ã éçºã¬ã€ã
- â ãããã質å - ãããã質åãšåç
- ð¬ ãåãåãã - æ¯æŽãåãã