Vue3本地导入式笔记

# 全局安装 Node.js 和 npm
# 注意:Ubuntu 默认仓库的 Node.js 版本可能较旧。
# 推荐使用 NodeSource 的仓库来安装更新的 LTS 版本。
# 首先安装 curl(如果尚未安装)
sudo apt install curl

#全局安装核心工具:create-vue
sudo npm install -g @vue/cli@next
# 注意:从 Vue CLI v5 开始,它内部使用 `create-vue` 来创建项目。
# 这是目前官方推荐的全局安装方式。

#安装完成后,你可以验证工具是否对所有用户可用。可以切换到一个普通用户,或者直接运行:
vue --version
# 或者
npm list -g @vue/cli

#安装完成后通过vue --version验证
vue --version

网络原因报错的解决方案:更换npm镜像源

# 使用 sudo 切换到 root 用户,并进入其根目录
sudo su -

# 为 root 用户设置淘宝镜像源
npm config set registry https://registry.npmmirror.com/

# 验证配置是否生效
npm config get registry
# 正确的输出应该是:https://registry.npmmirror.com/

npm install -g @vue/cli@next

#安装完后退出
exit
注:笔记无序,随用随查,关键字搜索

1. 删除通过 npm 安装的 axios 和 vue-axios 包

在 Node.js 项目中删除通过 npm 安装的 axios 和 vue-axios 包的方法如下:

基本卸载方法

npm uninstall axios vue-axios

或者分别卸载每个包:

npm uninstall axios
npm uninstall vue-axios

完全删除方法

要彻底删除包及其相关文件:

  1. 首先卸载包:
npm uninstall axios vue-axios
  1. 然后删除相关文件:
rm -rf node_modules
rm package-lock.json
  1. 重新安装剩余依赖:
npm install

验证删除

检查是否已成功删除:

npm list | grep axios

应该看不到任何包含 "axios" 或 "vue-axios" 的结果。

清理全局安装

如果是全局安装的,使用:

npm uninstall -g axios vue-axios

注意事项

  1. 删除前确保:
备份重要代码
  1. 如果使用 TypeScript,还需要删除类型定义:
npm remove @types/axios
  1. 检查 package.json 确保 dependencies 和 devDependencies 中已移除相关条目

2.npm常用指令

2.1 初始化项目

每次创建和修改都是在局部进行的

  1. 自己设置相关参数
    包名称一般不要使用大写字母,括号内的名称为默认包名称
#转到项目所在文件夹后
npm init
# 包名称设置
# 项目版本号
# 项目描述
# 项目入口文件
# 测试命令
# 上传到github上的仓储路径
# 关键字(便于搜索本项目)
# 作者
# 默认许可证
  1. 采用默认参数
# 转到项目所在文件夹
npm init -y

2.2 安装模块(JS库)

npm install <module name>[@版本号]

执行命令后会生成一个package-lock.json文件,文件中记录了项目的名称、具体版本号极其依赖等

2.3 全局安装模块

2.3.1 通过命令查看全局安装位置

npm root -g

2.3.2 npm全局安装js库

npm install <module_name> -g

2.3.3 npm查看全局安装的js库

npm list -g
# 或
npm ls -g   

2.4 生产环境和开发环境依赖模块的安装

2.4.1 生产环境依赖安装

如果项目中用到的js库在项目最后打包上线后需要用到,就要使用生产环境依赖的安装。生产环境依赖安装的语法如下

npm install <module-name> [--save|-S]

--save可以缩写为--s,-S为--save(只有一个-)的简写,同样install可以简写为i
加上--save参数安装后会自动把模块和版本号添加到package.json中的dependencies对象中,简称dep,就是指生产环境依赖

2.4.2 开发环境依赖安装

如果项目中用到的js库(例如,只是在开发过程中进行语法格式检查使用的ESLint模块)在项目最后打包上线的时候不需要用到,就使用开发环境依赖的安装。其语法格式为:

npm install <module-name> [--save-dev|-D]

2.5 CNPM命令的安装(即使用镜像源)

安装cnpm(安装好后与npm的使用一样)

npm install -g cnpm --registry=https://registry.npmmirror.com

2.6 通过package.json批量下载模块

进入项目根目录,输入npm install

2.7 其他常用npm命令

2.7.1 查看本地已安装的模块

npm list
# 或
npm ls

2.7.2 更新依赖

npm -rf node_modules/ #删除已安装的模块
npm cache clean       #清除npm内部缓存
npm install           #重新安装

2.7.3 查看模块的最新版本

npm view <module-name> version

2.7.4 查看模块的所有版本

npm view <module-name> versions

2.7.5 卸载本地模块

npm uninstall <module-name>

2.7.6 卸载全局模块

npm uninstall -g <module-name>

注:此处不能使用cnpm命令

3.版本号前的符号作用说明

npm 版本号符号含义 (^, ~, latest)

package.jsonnpm install 时,版本号前的符号控制依赖的更新范围:

符号 示例 含义 允许的更新范围
^ ^1.2.3 兼容版本更新 (默认)
允许更新次版本号修订号,但不更新主版本
1.2.31.x.x (不含 2.0.0)
~ ~1.2.3 小版本更新
只允许更新修订号
1.2.31.2.x (不含 1.3.0)
无符号 1.2.3 固定版本
严格锁定指定版本
1.2.3
latest latest 最新版本
总是安装最新发布的版本 (不稳定)
任何新版本

4. 消除导入.vue文件时出现无法识别的报错(但不影响程序运行)

在src文件夹新建以下文件
shims-vue.d.ts

declare module '*.vue' {
  import { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}

5. axios模块

1 axios发post请求

注意点:

  • 后端一定要加上CORS验证
  • 若后端开启了CSRF验证,前端也要带上CSRF Token

1.1 Django后端安装cors

安装必要的包

pip install django-cors-headers

1.2 修改settings.py配置

INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
]

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',  # 尽量放在最前面
    'django.middleware.common.CommonMiddleware',
    ...
]

# 下面的如果不想启用cors可以不用配置,限制很大


# CORS 配置
CORS_ALLOWED_ORIGINS = [
    "http://localhost:5173",  # 你的前端地址
    # 可以添加其他允许的源
]

# 允许携带凭据
CORS_ALLOW_CREDENTIALS = True

# 允许的请求头
CORS_ALLOW_HEADERS = [
    'content-type',
    'x-csrftoken',  # 允许CSRF Token
    'authorization',
]

# 允许的HTTP方法
CORS_ALLOW_METHODS = [
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
]

1.3 前端vue配置

try {
    axios.post("http://60.205.233.51:8000/test/",{"abc":"aaa"},{
        headers: {
            "X-CSRFToken": csrfToken,
            "Content-Type": "application/json",
        },
        // 该选项若开启,则会触发浏览器的特殊cors处理逻辑
        // withCredentials: true, // 允许携带 Cookie
    }).then((response)=>{
        console.log("请求成功")
        console.log(response.data)
    })
} catch (error) {
    console.log(error)
}

1.3.1 withCredentials: true作用

  • 携带身份验证信息:

    • 当设置为 true 时,浏览器会在跨域请求中携带以下凭据:
    • Cookies(包括会话cookie)
    • HTTP 认证头(如 Authorization)
    • TLS 客户端证书
  • 与 CORS 的交互:

    • 启用此选项会触发浏览器的特殊 CORS 处理逻辑
    • 服务器必须明确允许带凭据的请求

App.vue

<template>
    
    <!-- 写html内容 -->
    <div id="body">
        <h2 style="display: block;">登录</h2>
        <div class="login">
            <form @submit.prevent="postPassword">
                <!-- 移除 action 和 method 属性 -->
                <div id="user">
                    <p>账号:</p>
                    <input type="text" class="UserData" placeholder="请输入账号">
                </div>
                <div id="password">
                    <p>密码:</p>
                    <input type="password" class="UserData" placeholder="请输入密码">
                </div>
                <div id="password_two">
                    <p>确认密码:</p>
                    <input type="password" class="UserData" placeholder="请输入密码">
                </div>
                <div class="function">
                    <button type="submit">注册</button>
                </div>
            </form>
        </div>
    </div>
</template>


<script lang="ts">
    export default{
        name:"..."
    }
</script>

<script lang="ts" setup>
    import {ref} from 'vue'
    import axios from 'axios'
    function postPassword(password){
        // password应为一个字典数据
        try {
            axios.post("http://60.205.233.51:8000/test/",{"abc":"aaa"},{
                headers: {
                    "X-CSRFToken": csrfToken,
                    "Content-Type": "application/json",
                },
                // withCredentials: true, // 允许携带 Cookie
            }).then((response)=>{
                console.log("请求成功")
                console.log(response.data)
            })
        } catch (error) {
            console.log(error)
        }
    }

    // 从 Cookie 获取 CSRF Token(Django 会自动设置 csrftoken Cookie)
    function getCookie(name) {
        const value = `; ${document.cookie}`;
        const parts = value.split(`; ${name}=`);
        if (parts.length === 2) return parts.pop().split(';').shift();
    }

    const csrfToken = getCookie('csrftoken');

    
</script>

5.多项目仓库中进入单个项目的方法

pnpm --filter 该目录下的项目文件夹 dev
posted @ 2026-07-03 06:17  畅畅c  阅读(2)  评论(0)    收藏  举报