210 lines
2.9 KiB
Markdown
210 lines
2.9 KiB
Markdown
### script-setup写法
|
||
|
||
#### 第一部分
|
||
|
||
##### template
|
||
|
||
#### 第二部分
|
||
|
||
##### script
|
||
|
||
##### 一、import的顺序, 依次按照下面的顺序。
|
||
|
||
1. vue模块
|
||
|
||
```typescript
|
||
import { } from 'vue';
|
||
```
|
||
|
||
2. vue相关类型
|
||
|
||
```typescript
|
||
import type { } from 'vue';
|
||
```
|
||
|
||
3. vue-router模块
|
||
|
||
```typescript
|
||
import { } from 'vue-router';
|
||
```
|
||
|
||
4. vue-router相关类型
|
||
|
||
```typescript
|
||
import type { } from 'vue-router';
|
||
```
|
||
|
||
5. UI框架模块
|
||
|
||
```typescript
|
||
import { } from 'naive-ui';
|
||
```
|
||
|
||
6. UI框架相关类型
|
||
|
||
```typescript
|
||
import type { } from 'naive-ui';
|
||
```
|
||
|
||
7. 第三方依赖
|
||
|
||
```typescript
|
||
import BScroll from 'bscroll';
|
||
```
|
||
|
||
8. 第三方依赖相关类型
|
||
|
||
```typescript
|
||
import type { } from 'bscroll';
|
||
```
|
||
|
||
9. @/enum
|
||
|
||
```typescript
|
||
import { } from '@/enum';
|
||
```
|
||
|
||
10. @/setting
|
||
|
||
```typescript
|
||
import { } from '@/setting';
|
||
```
|
||
|
||
11. @/plugins
|
||
|
||
```typescript
|
||
import { } from '@/plugins';
|
||
```
|
||
|
||
12. @/layouts
|
||
|
||
```typescript
|
||
import { } from '@/layouts';
|
||
```
|
||
|
||
13. @/views
|
||
|
||
```typescript
|
||
import { } from '@/views';
|
||
```
|
||
|
||
14. @/components
|
||
|
||
```typescript
|
||
import { } from '@/components';
|
||
```
|
||
|
||
15. @/hooks
|
||
|
||
```typescript
|
||
import { } from '@/hooks';
|
||
```
|
||
|
||
16. @/store
|
||
|
||
```typescript
|
||
import { } from '@/store';
|
||
```
|
||
|
||
17. @/context
|
||
|
||
```typescript
|
||
import { } from '@/context';
|
||
```
|
||
|
||
18. @/router
|
||
|
||
```typescript
|
||
import { } from '@/router';
|
||
```
|
||
|
||
19. @/service
|
||
|
||
```typescript
|
||
import { } from '@/service';
|
||
```
|
||
|
||
20. @/utils
|
||
|
||
```typescript
|
||
import { } from '@/utils';
|
||
```
|
||
|
||
21. @/interface
|
||
|
||
```typescript
|
||
import { } from '@/interface';
|
||
```
|
||
|
||
22. @/assets
|
||
|
||
```typescript
|
||
import { } from '@/assets';
|
||
```
|
||
|
||
23. 相对路径依赖
|
||
|
||
```typescript
|
||
import { } from './components';
|
||
```
|
||
|
||
##### 二、TS类型声明
|
||
|
||
```typescript
|
||
interface Props {
|
||
/**姓名 */
|
||
name: string;
|
||
/**年龄 */
|
||
age?: number;
|
||
}
|
||
interface Emits {
|
||
/**
|
||
* 删除事件
|
||
* @param id - 删除项的id
|
||
*/
|
||
(e: 'delete', id: number): void;
|
||
}
|
||
```
|
||
|
||
|
||
##### 三、defineProps、defineEmits、withDefaults
|
||
|
||
1. 定义属性,如:
|
||
|
||
```typescript
|
||
const props = withDefaults(defineProps<Props>(), {
|
||
age: 24
|
||
});
|
||
```
|
||
|
||
其中name是必须的属性,age是可选属性,通过withDefaults添加默认值
|
||
|
||
2. 定义emit事件
|
||
|
||
```typescript
|
||
const emit = defineEmits<Emits>();
|
||
```
|
||
|
||
##### 四、响应式use函数
|
||
|
||
有些use函数需要传入响应式的变量参数时,则书写在声明的变量下面。
|
||
|
||
```typescript
|
||
const router = useRouter();
|
||
const route = useRoute();
|
||
```
|
||
|
||
```typescript
|
||
/**dom引用 */
|
||
const domRef = ref<HTMLElement | null>(null);
|
||
const { height: domRefHeight } = useElementSize(domRef); //获取domRef的响应式高度
|
||
```
|
||
|
||
|
||
|
||
##### 五、变量、函数声明
|
||
|
||
##### 六、vue生命周期函数、nextTick执行
|
||
|
||
##### 七、defineExpose
|