作者: admin

  • Git 初始化与首次提交流程

    初始化 Git 仓库(如果还未初始化)

    git init

    添加文件并进行第一次提交(如果仓库已经有文件,那么这两步可以不用执行,配置好后续信息后,直接从服务器拉取代码即可。)

    git add .
    git commit -m "Initial commit"

    创建 main 分支(如果当前不是 main 分支)

    git branch -M main

    设置远程仓库(如果尚未设置)

    git remote add origin <你的远程仓库地址>

    使用 git pull 将远程仓库的内容拉取到本地,并合并(如果有冲突的话,你需要手动解决)

    git pull origin main --rebase

    推送代码到 main 分支

    git push -u origin main

    -u 选项表示将 main 设为默认上游分支,之后你可以直接使用 git push,Git 会自动推送到 main。

    如果要推送到 master 分支,那么就把上面的 main 替换为 master 即可。

  • git配置用户名和邮箱

    $ git config --global user.name "laowu"
    $ git config --global user.email "xxxx@outlook.com"

    注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    让Git显示颜色,会让命令输出看起来更醒目:

    $ git config --global color.ui true

    让git显示颜色这个功能,我测试没有效果,如果你也没有效果,那你不是一个人。

  • 为 EasyUI TagBox 添加自动回车

    在使用 EasyUI 的 TagBox 组件时,默认情况下,用户需要按回车键 (Enter) 才能添加标签。但有时用户可能会输入内容后忘记按回车,导致输入的标签未被添加。为了解决这个问题,我们可以通过 JavaScript 自动触发回车事件,让输入的内容自动转化为标签。

    实现方法

    使用 jQuery 触发 keydown 事件,并模拟按下 Enter 键,使得用户输入后能够自动完成标签添加。

    代码示例

    $('#tag').tagbox('textbox').trigger($.Event("keydown", { keyCode: 13 }));

    说明

    • $('#tag'):获取 TagBox 组件。
    • .tagbox('textbox'):获取 TagBox 组件的输入框。
    • .trigger($.Event("keydown", { keyCode: 13 })):模拟用户按下回车键。

    进一步优化

    可以在输入框失去焦点时自动触发回车,以确保输入的内容被正确添加为标签。

    $('#tag').tagbox('textbox').on('blur', function() {
        $(this).trigger($.Event("keydown", { keyCode: 13 }));
    });

    这样做的好处

    1. 自动添加标签:用户输入后,即使忘记按回车,输入框失去焦点时也会自动添加标签。
    2. 提高用户体验:减少用户手动操作的步骤,使交互更加流畅。

    结论

    通过以上方法,我们可以让 EasyUI 的 TagBox 组件自动处理用户输入,防止用户忘记按回车导致标签未添加的问题。这不仅提升了用户体验,还能使应用更加智能和易用。

  • EasyUI中tree获取半选中和选中的项

    EasyUI中tree有三种选中状态,分别是 checked(选中)、unchecked(未选中)、indeterminate(部分选中)。

    其中 indeterminate 状态比较特殊,主要表示只有部分子节点选中的父级状态,表现为选中框是个圆点。

    EasyUI 为这三种状态的获取提供了比较好的方法:

    var nodes = $('#tt').tree('getChecked'); // 获取选中的节点
    var nodes = $('#tt').tree('getChecked', 'unchecked'); //获取未选中的节点
    var nodes = $('#tt').tree('getChecked', 'indeterminate'); // 只获取部分选中的节点
    var nodes = $('#tt').tree('getChecked', ['checked','indeterminate']); // 同时获取选中的和部分选中的节点
  • 如何从零创建 Vue 项目

    Vue.js 是一个流行的前端框架,可以用于构建现代化的 Web 应用。本文将介绍如何从零创建一个 Vue 项目。

    1. 安装 Node.js

    在创建 Vue 项目前,需要先安装 Node.js,因为 Vue 依赖 npm(或 yarn)来管理包。

    • 访问 Node.js 官网 下载并安装最新版。
    • 安装完成后,可以运行以下命令检查安装是否成功:
    node -v
    npm -v

    如果成功安装,会输出 Node.js 和 npm 的版本号。

    2. 使用 npm 创建 Vue 项目

    Vue 官方提供了 create-vue 工具来快速创建 Vue 3 项目。

    运行以下命令创建一个新的 Vue 项目:

    npm create vue@latest

    在执行命令后,终端会提示你选择一些选项,例如是否使用 TypeScript、Pinia、Vue Router 等。根据需要进行选择。

    如果希望直接指定项目名称,例如 my-vue-app,可以使用:

    npm create vue@latest my-vue-app

    然后进入项目目录:

    cd my-vue-app

    3. 安装依赖

    Vue 创建完成后,需要安装项目依赖:

    npm install

    如果你使用 yarn 或 pnpm,也可以使用:

    yarn install
    # 或
    pnpm install

    4. 启动开发服务器

    安装依赖后,运行以下命令启动本地开发服务器:

    npm run dev

    终端会输出一个本地访问地址,例如:

    Local: http://localhost:5173/

    打开浏览器访问该地址,即可看到 Vue 应用的默认页面。

    5. 目录结构介绍

    Vue 项目生成后,基本的目录结构如下:

    my-vue-app/
    ├── node_modules/       # 依赖包目录
    ├── public/             # 静态资源
    ├── src/                # 源代码
    │   ├── assets/         # 资源文件
    │   ├── components/     # 组件
    │   ├── App.vue         # 根组件
    │   ├── main.js         # 入口文件
    ├── .gitignore          # Git 忽略文件
    ├── package.json        # 项目配置文件
    ├── README.md           # 项目说明文件

    6. 构建生产环境代码

    当开发完成后,可以运行以下命令打包生产环境代码:

    npm run build

    生成的静态文件会被放在 dist/ 目录下,可以部署到服务器。

    7. 其他常用命令

    • 运行测试:npm run test
    • 格式化代码:npm run lint

    至此,你已经成功从零创建了一个 Vue 项目,并可以进行开发和部署。希望这篇教程对你有所帮助!

  • npm 删除全局包

    在使用 npm 安装全局包时,可能会遇到需要删除某些不再使用的包的情况。以下介绍两种删除全局 npm 包的方法。

    方法一:使用命令行删除

    npm 提供了 uninstall 命令,可以直接通过以下命令删除全局安装的 npm 包:

    npm uninstall -g 包名

    例如,要删除 express,可以运行:

    npm uninstall -g express

    执行此命令后,npm 会自动删除全局安装的 express 及其相关文件。

    方法二:手动删除对应包

    如果上述方法无法完全删除,或者你希望手动清理全局包,可以直接删除 npm 存储全局包的目录。

    Windows 用户

    全局 npm 包通常存放在以下目录:

    C:\Users\你的用户名\AppData\Roaming\npm

    你可以手动进入该文件夹,找到对应的包文件夹并删除。

    此外,全局包的依赖通常存放在 node_modules 目录中,对应的路径是:

    C:\Users\你的用户名\AppData\Roaming\npm\node_modules

    node_modules 目录下找到需要删除的包,直接删除即可。

    macOS / Linux 用户

    在 macOS 或 Linux 系统上,全局 npm 包通常存放在 /usr/local/lib/node_modules 目录下。

    你可以使用以下命令删除某个包:

    sudo rm -rf /usr/local/lib/node_modules/包名

    额外检查

    删除全局 npm 包后,可以运行以下命令来检查是否删除成功:

    npm list -g --depth=0

    如果包名已经不在列表中,则说明删除成功。

    希望这篇文章对你有所帮助!

  • npm使用淘宝源

    众所周知,npm官方源在国内很慢,好在国内有一些厂家提供了国内的npm源镜像,比如淘宝的npm源,本文将教会你如何配置npm以使用淘宝源,在终端工具中执行下面的命令:

    npm config set registry https://registry.npmmirror.com

    执行后,即可把npm源设置为国内淘宝源。

    如果想要改回官方源,可以执行下面的命令:

    npm config set registry https://registry.npmjs.org

    执行后,npm源就又变成了官方源。

  • Vue3 + Element Plus 日期时间选择器 (el-date-picker) 格式化指南

    在 Vue3 + Element Plus 项目中,el-date-picker 是一个强大的日期时间选择组件,支持多种格式化方式。在使用 el-date-picker 组件时,我们可以通过 value-format 来控制其绑定值的格式。

    1. value-format 参数介绍

    el-date-picker 组件中,value-format 主要用于定义 v-model 绑定的数据格式。常见格式如下:

    timestamp:时间戳格式,例如 1709376600000

    YYYY-MM-DD:日期格式,例如 2025-03-02

    YYYY-MM-DD hh:mm:ss:日期时间格式,例如 2025-03-02 14:30:00

    YYYY/MM/DD HH:mm:ss:斜杠分隔格式,例如 2025/03/02 14:30:00

    2. 示例代码

    以下是一个 el-date-picker 组件的使用示例,绑定到 form.start_time,并使用 YYYY-MM-DD hh:mm:ss 作为 value-format

    <template>
      <el-form :model="form">
        <el-form-item label="开始时间">
          <el-date-picker
            v-model="form.start_time"
            type="datetime"
            value-format="YYYY-MM-DD hh:mm:ss"
            placeholder="请选择日期时间" />
        </el-form-item>
      </el-form>
    </template>
    
    <script setup>
    import { reactive } from 'vue';
    
    const form = reactive({
      start_time: '' // 初始值为空
    });
    </script>

    3. value-format 的作用

    • value-format 定义了 v-model 绑定的值的格式,适用于表单提交时传输标准化格式的数据。
    • 如果不设置 value-format,默认绑定的是 Date 对象,而不是字符串。
    • 在处理时间格式化时,建议根据后端要求设置合适的 value-format,如 YYYY-MM-DD HH:mm:ss 以确保数据兼容性。

    4. format 与 value-format 的区别

    参数作用
    format控制 UI 组件显示的格式
    value-format控制 v-model 绑定的值的格式

    例如,如果 format="YYYY/MM/DD"value-format="YYYY-MM-DD hh:mm:ss",那么用户在界面上看到的格式是 2025/03/02,但提交的数据格式是 2025-03-02 14:30:00

    总结:

    在 Vue3 + Element Plus 中,el-date-picker 组件的 value-format 参数用于控制数据的格式化,以便前后端数据交互。通过合理配置 value-format,可以确保数据在前端展示与后端存储之间保持一致。

    如果需要更多自定义格式或处理时间转换,可以结合 dayjsmoment.js 进行进一步操作。

    希望本文能帮助你更好地理解 el-date-picker 的格式化配置!

  • 如何在 AdminLTE 中实现动态菜单高亮效果

    在开发后台管理系统时,菜单的高亮效果是一个很常见的需求。它可以帮助用户快速识别当前所在的页面,提升用户体验。AdminLTE 是一个流行的后台管理模板,它提供了丰富的 UI 组件和功能,但默认情况下,菜单的高亮效果需要我们自己实现。

    下面是一个简单的 JavaScript 代码示例,用于在 AdminLTE3 中实现动态菜单高亮效果。这段代码会根据当前页面的 URL,自动为对应的菜单项添加高亮样式。

    <script>
    	$(function () {
    		/** add active class and stay opened when selected */
    		var url = window.location;
    		// for sidebar menu entirely but not cover treeview
    		$('ul.nav-sidebar a').filter(function () {
    			return this.href == url;
    		}).addClass('active');
    		// for treeview
    		$('ul.nav-treeview a').filter(function () {
    			return this.href == url;
    		}).parentsUntil(".nav-sidebar > .nav-treeview").addClass('menu-open').prev('a').addClass('active');
    	});
    </script>

    代码解析

    1. 获取当前 URL:通过 window.location 获取当前页面的 URL。
    2. 普通菜单高亮:通过 ul.nav-sidebar a 选择器找到所有侧边栏菜单项,然后使用 filter 方法筛选出与当前 URL 匹配的菜单项,并为其添加 active 类。
    3. 树形菜单高亮:对于树形菜单(通常是有子菜单的项),代码会先找到匹配的菜单项,然后向上查找父级元素,添加 menu-open 类以展开菜单,同时为父级链接添加 active 类。

    如果你用的是 AdminLTE2,那么可以使用下面的代码:

    <script>
        $(document).ready(function () {
            /** add active class and stay opened when selected */
            var url = window.location;
            // for sidebar menu entirely but not cover treeview
            $('ul.sidebar-menu a').filter(function () {
                return this.href == url;
            }).parent().siblings().removeClass('active').end().addClass('active');
            // for treeview
            $('ul.treeview-menu a').filter(function () {
                return this.href == url;
            }).parentsUntil(".sidebar-menu > .treeview-menu").siblings().removeClass('active').end().addClass('active');
        })
    </script>
  • JS格式化货币

    在开发和金额有关的网站应用时,货币格式化是一个常见的需求。无论是电商网站的商品价格,还是财务系统的金额显示,我们都需要将数值以规范的货币格式呈现给用户。比如,将 1234567.89 格式化为 1,234,567.89,这样不仅更美观,也更容易阅读。

    下面是一个简单而实用的 JavaScript 函数,可以帮助你轻松实现货币格式化。这个函数会将数值修约为两位小数,并添加千位分隔符,确保金额显示的规范性和一致性。

    代码实现:

    //language:js
    // 格式化货币
    function formatCurrency(value) {
        // 先将数值修约为两位小数
        let rounded = Math.round(value * 100) / 100;
        // 将数值转换为字符串
        let valueString = rounded.toString();
        
        // 检查是否有小数点
        let decimalPos = valueString.indexOf('.');
        // 如果没有小数点,添加".00"
        if (decimalPos === -1) {
            valueString += ".00";
        } else {
            // 否则, 确保小数部分至少有两位数字
            let decimalPart = valueString.substring(decimalPos + 1);
            if (decimalPart.length === 1) {
                // 如果只有一位小数, 添加一个0
                valueString += "0";
            }
        }
        
        // 添加千位分隔符
        let parts = valueString.split('.');
        parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        
        return parts.join(".");
    }

    代码解析

    1. 修约数值
      • 使用 Math.round(value * 100) / 100 将数值修约为两位小数。这样可以确保金额的精度符合货币显示的要求。
    2. 处理小数部分
      • 将数值转换为字符串后,检查是否存在小数点。
      • 如果没有小数点,直接添加 .00,确保金额始终显示两位小数。
      • 如果小数点后只有一位数字,则补一个 0,例如将 123.5 转换为 123.50
    3. 添加千位分隔符
      • 使用正则表达式 /\B(?=(\d{3})+(?!\d))/g 在整数部分添加千位分隔符(逗号)。
      • 例如,将 1234567 转换为 1,234,567
    4. 拼接结果
      • 最后将整数部分和小数部分拼接起来,返回格式化后的字符串。

    使用示例:

    console.log(formatCurrency(1234567.89)); // 输出: "1,234,567.89"
    console.log(formatCurrency(1234.5));      // 输出: "1,234.50"
    console.log(formatCurrency(1234));       // 输出: "1,234.00"

    注意:

    如果你需要更复杂的货币格式化功能(例如支持多国货币、自定义符号等),可以考虑使用现成的库,比如 Intl.NumberFormat,它提供了更强大的国际化支持。