【vue】vue组件化开发初体验-示例vue-loader-example学习记录

Vue CLI项目结构解析与工程化实践 Vue CLI作为现代前端工程化的核心工具,通过标准化的项目脚手架简化了开发流程。其基于webpack的构建系统支持模块化开发、热更新和代码分割等特性,显著提升了开发效率。项目结构中的package.json管理着依赖和脚本,而babel.config.js则负责ES6+语法转换和polyfill注入。在工程实践层面,vue.config.js提供了灵活的webpack配置覆盖能力,支持代理设置、环境变量区分等常见需求。对于Vue技术栈开发者而言,理解这些配置文件的作用机制,能够更好地进行性能优化和问题排查 阅读详情

目录结构

- demo/
  + package.json //npm配置文件
  + webpack.config.js //webpack配置
  + index.html //页面
  - node_modules //npm加载的模块
  - src //开发资源目录
    - assets //一些资源
      + logo.png  //图片资源
    - components //vue组件
      + a.vue 
      + b.vue
      + counter.vue
    + app.vue //布局文件
    + main.js  //入口文件

初始化npm

1.生成npm配置文件 package.json

npm init

2.可以粘贴如下配置内容替换到package.json中,或者根据变动进行修改

{
  "name": "demo_vue-loader-example",
  "version": "0.0.1",
  "description": "demo",
  "main": "index.js",
  "scripts": {
    "dev": "webpack-dev-server --inline --hot --quiet", 
    "build": "export NODE_ENV=production && webpack --progress --hide-modules"
  },
  "author": "dingyiming",
  "license": "MIT",
  "devDependencies": {
    "babel-core": "^6.2.1",
    "babel-loader": "^6.2.0",
    "babel-plugin-transform-runtime": "^6.1.18",
    "babel-preset-es2015": "^6.1.18",
    "babel-preset-stage-0": "^6.1.18",
    "babel-runtime": "^6.2.0",

    "css-loader": "^0.23.0",
    "node-sass": "^3.4.2",
    "sass-loader": "^3.1.2",
    "style-loader": "^0.13.0",
    "stylus-loader": "^1.4.2",

    "file-loader": "^0.8.5",
    "jade": "^1.11.0",
    "template-html-loader": "0.0.3",

    "vue-hot-reload-api": "^1.2.1",
    "vue-html-loader": "^1.0.0",
    "vue-loader": "^7.1.4",

    "webpack": "^1.12.9",
    "webpack-dev-server": "^1.14.0"
  },
  "dependencies": {
    "vue": "^1.0.10"
  }
}

3.下载node模块

npm install
  • 其实我是一条条用npm i xxx --save-dev敲的,没有在package.json里面的"devDependencies":{}手动添加内容,可以一个个装(也可以一起敲)如 npm i webpack --save-dev,npm i vue --save
  • --save-dev 把依赖名和版本要求放在了 "devDependencies":{},
  • --save 放在了 "dependencies":{}
  • 每敲一个下载完后可以看到"devDependencies":{}依赖内容的添加

新建index.html用于展示最终页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Vue Webpack Example</title>
</head>
<body>
<app></app>
<script src="dist/build.js"></script>
</body>
</html>

新建webpack.config.js用于配置webpack

var webpack = require('webpack')

module.exports = {
  entry: './src/main.js',
  output: {
    path: './dist',
    publicPath: 'dist/',
    filename: 'build.js'
  },
  module: {
    loaders: [
      {
        test: /\.vue$/,
        loader: 'vue'
      },
      {
        // edit this for additional asset file types
        test: /\.(png|jpg|gif)$/,
        loader: 'file?name=[name].[ext]?[hash]'
      }
    ]
  },
  // example: if you wish to apply custom babel options
  // instead of using vue-loader's default:
  babel: {
    presets: ['es2015', 'stage-0'],
    plugins: ['transform-runtime']
  }
}

if (process.env.NODE_ENV === 'production') {
  module.exports.plugins = [
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      }
    }),
    new webpack.optimize.OccurenceOrderPlugin()
  ]
} else {
  module.exports.devtool = '#source-map'
}

新建src目录用于存放开发文件

新建入口文件main.js

var Vue = require('vue')
var App = require('./app.vue')

new Vue({
  el: 'body',
  components: {
    app: App
  }
})

新建组件布局文件app.vue

组件布局将在这里设置,.vue文件将由vue-loader进行加载,.vue内同时包含html、css、js源码,使组件的独立,组件之间可以尽可能地解耦,便于开发维护

<template lang="jade">
div
  img(class="logo", src="./assets/logo.png")
  h1 {{msg}}
  comp-a
  comp-b
  counter
</template>

<script>
import CompA from './components/a.vue'
import CompB from './components/b.vue'
import Counter from './components/counter.vue'
export default {
  data () {
    return {
      msg: 'Hello from vue-loader!'
    }
  },
  components: {
    CompA,
    CompB,
    Counter
  }
}
</script>

<style lang="stylus">
font-stack = Helvetica, sans-serif
primary-color = #999
body
  font 100% font-stack
  color primary-color
.logo
  width 40px
  height 40px
</style>

新建components文件夹

用于开发具体的子组件,均以.vue的后缀呈现

  • a.vue
<style scoped>
.container {
  border: 1px solid #00f;
}
.red {
  color: #f00;
}
</style>

<template>
  <div class="container">
    <h2 class="red">{{msg}}</h2>
  </div>
</template>

<script>
export default {
  data () {
    return {
      msg: 'Hello from Component A!'
    }
  }
}
</script>
  • b.vue
<style scoped>
.container {
  border: 1px solid #f00;
}
h2 {
  color: #393;
}
</style>

<template>
  <div class="container">
    <h2>Hello from Component B!</h2>
  </div>
</template>
  • counter.vue
<template>
  <div>
    <h1>I am a Counter Component. Edit me in dev mode.</h1>
    <p>Current count: {{count}}</p>
  </div>
</template>

<script>
export default {
  data () {
    return { count: 0 }
  },
  ready () {
    this.handle = setInterval(() => {
      this.count++
    }, 1000)
  },
  destroyed () {
    clearInterval(this.handle)
  }
}
</script>

新建assets文件夹用于放一些资源

  • 此项目下有一张图

打包运行查看

  • 打包:
npm run build

  • 运行
npm run dev

  • 查看
浏览器中访问 localhost:8080

小结

经过通读官方文档和这个源码示例多少对vue有了更好的认识,不过还是得接下来多练习练习,加强熟悉度。

别再让模型拖慢你的Three.js应用!手把手教你用DRACO压缩gltf(Vue项目实战) 本文详细介绍了如何在Vue项目中使用DRACO压缩技术优化Three.js应用的gltf模型,显著提升加载速度和性能。通过实战案例和性能对比,展示DRACO压缩如何将模型文件大小减少89%,加载时间缩短85%,并提供了完整的压缩流程、Vue集成指南和常见问题解决方案。 阅读详情

相关推荐

vue-example:vue学习样例

vue-example-weiye 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。

Vue——组件化开发

我们在复用组件的时候肯定希望,各自组件用各自的变量,如果确实需要都用一样的,可以全局组件注册,也可以是用vuex来进行状态管理。注意:组件就是一个vue实例,vue实例的属性,组件也可以有,例如data、methods、computed等。的count是各自用各自的,像局部变量一样有块级作用域,这个块级就是vue组件的作用域。​ 父组件访问子组件,有时候需要直接操作子组件的方法,或是属性,此时需要用到。​ 组件的思想是复用,定义组件当然是把通用的公共的东西抽出来复用。并不保证顺序,也不是响应式的。...

鹿蹊zz的博客 2726

vue-example:Vue.js示例

Vue.js示例应用程序 将Vue.js与Webpack或Rollup结合使用的示例。 例子 作者

vue Examples模板

vue Examples模板 通过script引入使用vue 非使用脚手架 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples</title> <meta name="description" content

前端开发工程师博客 749

IGBT单管并联方案全解析:从均流设计到热管理实战技巧

本文深入解析了IGBT单管并联技术在新能源车电驱系统中的应用,重点探讨了均流设计与热管理实战技巧。通过优化寄生电感控制、动态均流和驱动电路设计,提升系统稳定性和效率,为工程师提供了一套完整的解决方案。

weixin_28720573的博客 440

高通410随身WiFi刷OpenWRT与Debian双系统一键集成方案

本文详细介绍高通410随身WiFi设备刷入OpenWRT与Debian双系统的一键集成方案。通过虎王工作室提供的一键刷机包,用户可轻松实现双系统部署,兼顾OpenWRT的网络功能与Debian的完整应用服务,适用于网络加速、服务器部署等多种场景,并提供了硬件资源分配与系统切换的实用指南。

docker7nomad的博客 1137

Vue3 组件化开发

父子组件相互传数据

二哈喇子! 6149

哈工大2021年秋季学期数据结构期末试题

因为考完试没有收演草纸,所以题中数据与考试差距不大。选项顺序可能略有差异;选择第5题希尔排序的序列数据是后编的;简答第3题B-树的插入序列顺序可能不同,但是考察的点是一样的。其他题的数据基本可以保证和原题一样。 一、选择题 111.以下代码的时间复杂度是 for(int k=1;k<=n;k++) for(int j=1;j<=n;j++) count++; A.O(n)       B.O(nlogn) &

Castria的博客 4272

Vue组件化开发

组件:是一个独立显示的视图单元,在构建大型应用时,我们通常会把可复用性强的部分。. (例如:头部导航、侧边栏等需要在多个页面展示的部分)提取出来,最终组合成一个完整的页面。. 在vue中,组件是可复用的vue实例。全局组件:注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中,全局组件必须写在Vue实例创建之前。:::warning全局组件缺点:组件注册之后无法被回收,一直保存在内存中。

m0_61924520的博客 2749

xilinx原语及bank简介

图8是HP bank与HR bank的IO模块,其中PAD是FPGA的金属管脚,IOB是输入、输出引脚的控制模块。此时使用原语就可以只调用需要的组件,不需要去考虑其余组件参数设置,就方便很多,借助此次机会就对IDDR、ODDR、IDELAYE2、ODELAYE2、IDELAYCRTL、ISERDESE、OSERDESE等几个原语做了简要了解,并对原语的各个模式进行了仿真,本文最初是介绍IDDR的,但在介绍IDDR这些原语之前,还需要了解一下7系列FPGA bank的分类和区别,所以就有了本文。

qq_43416206的博客 413

【UVM实战】第七章:UVM中的寄存器模型(1)寄存器模型简介

寄存器模型简介~

悟已往之不谏 知来者之可追 2070

vue组件化开发初体验-示例vue-loader-example学习记录

目录结构 - demo/ + package.json //npm配置文件 + webpack.config.js //webpack配置 + index.html //页面 - node_modules //npm加载的模块 - src //开发资源目录 - assets //一些资源 + logo.png //图片资源 - component

勿忘初心的博客 500

财务惊呼“不可能”!Python 自动识别 PDF 发票,数据秒级录入系统

电子发票(原生 PDF):这种最爽,文字是可以选中的。我们用 PyPDF2 直接提取文本,速度快,准确率 100%。 纸质扫描/拍照发票:这种是图片。必须上 OCR(光学字符识别)。我们要用百度开源的 PaddleOCR,这是目前中文识别效果最好的开源库之一,吊打早已过气的 Tesseract。

BUG猿的博客 1024

Vue CLI 不是脚手架:它是前端工程化操作系统内核

Vue CLI 本质是一个可配置、可扩展的前端工程化操作系统内核,它通过统一配置契约(vue.config.js)、插件机制(@vue/cli-plugin-*)和钩子系统,将 webpack、Babel、ESLint 等工具深度集成。其核心价值在于构建时序控制、配置优先级融合与跨工具协同——例如 Babel 作为 Vue 编译器前置哨兵保障 `<script setup>` 宏解析,webpack 模块联邦支撑微前端架构演进。这些能力使 Vue CLI 成为 Vue 3 项目稳定交付、性能优化与复杂场景(

weixin_33912246的博客 480

高通平台WIFI学习-- WCN7851 三频 2X2 MIMO DBS HBS Wi-Fi 7介绍

WCN7851是支持Wi-Fi 7和蓝牙5.4的三频SoC芯片,具有以下核心特性:采用NSP334封装,支持2.4GHz/5GHz/6GHz三频段并发操作,最高速率达5.8Gbps;集成MU-MIMO、4096QAM调制技术,6GHz频段支持320MHz带宽;提供PCIe Gen3接口和低功耗设计,兼容多种无线标准。电气特性包括1.8V/1.2V可编程GPIO、76.8MHz时钟源要求,以及详细的射频性能参数。该芯片通过多链路操作和动态频率选择等先进功能,实现高性能无线连接。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 1275

华为OD新系统机试真题 - 配置操作失败数量统计

华为OD机试新系统 4月8号【配置操作失败数量统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【配置操作失败数量统计】。

qq_45776114的博客 1159

Vue-Cli 入门指南:从零搭建现代化 Vue.js 开发环境

在现代前端开发中,构建工具链是提升开发效率的关键。通过模块打包工具如 Webpack,开发者能够将模块化的 JavaScript、CSS 等资源进行高效打包和优化。其核心原理在于依赖图分析和代码转换,这为复杂应用的工程化奠定了基础。该技术价值在于实现了代码分割、热更新和自动化构建,极大地优化了开发体验和项目维护性。其应用场景广泛覆盖单页应用、组件库开发等。本文聚焦于 Vue.js 生态中的官方脚手架工具 Vue-Cli,它深度集成了 Webpack、Babel 等工具链,提供开箱即用的项目配置。通过 Vue

优快云头条 472

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vue3项目创建与核心开发实战:从vue-cli到Vite,Composition API与Pinia详解

前端开发中,构建工具和响应式框架是提升开发效率与项目可维护性的核心技术。其原理在于通过模块化打包、依赖管理和热更新机制,优化开发体验与构建性能。Vite凭借原生ES模块(ESM)实现了极速的冷启动与热更新,而Webpack则以其强大的生态和可配置性在复杂场景中保持稳健。在框架层面,Vue3的Composition API通过更灵活的代码组织方式,解决了大型应用中逻辑复用与代码阅读的难题,其底层的Proxy响应式系统相比Vue2的Object.defineProperty,提供了更全面、高效的依赖追踪能力。这

cmff98425的博客 329

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Vue CLI 构建原理深度解析:三层架构与配置解耦实战

Vue CLI 是 Vue 项目默认构建工具,其本质是基于 Webpack 和 Babel 的可插拔配置封装系统。它通过命令层、服务层、构建层三级抽象,将复杂构建逻辑转化为标准化 npm script 和声明式配置。核心价值在于提供稳定可控的构建环境,避免因 webpack 版本冲突、Babel 转译遗漏或插件加载顺序导致的隐性故障。典型应用场景包括企业级项目维护、CI/CD 稳定性加固、Vue 2/3 升级过渡及向 Vite 迁移前的构建链路审计。本文聚焦 vue.config.js 配置机制、chain

weixin_34337381的博客 318

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

vue-styleguidist 3.0:Vue 3 + TypeScript 类型驱动的组件文档引擎

组件文档工具是前端工程化中连接代码与协作的关键枢纽。其核心原理在于从源码中静态提取组件元信息(props、events、slots等),并结合类型系统生成可交互的说明界面。技术价值体现在消除文档与代码的语义割裂,提升类型安全可见性与团队知识同步效率。典型应用场景包括 Vue 组件库开发、Design System 治理、跨团队 SDK 文档交付及 CI/CD 自动化文档发布。随着 Vue 3 Composition API 和 TypeScript 深度普及,传统基于 React 生态的解析方案已无法准确识

weixin_30721077的博客 396

基于Java+Vue+Spring Boot的课程作业管理系统全栈开发实战

课程作业管理系统是高校教学管理信息化的重要应用,其核心在于通过技术手段优化传统作业流程。从技术原理层面看,这类系统通常采用前后端分离架构,后端负责业务逻辑与数据持久化,前端负责用户交互。在Java技术栈中,Spring Boot凭借其自动配置和快速启动特性,极大地简化了RESTful API的开发;而Vue.js作为渐进式前端框架,其组件化和响应式设计能高效构建动态用户界面。这种技术组合的工程价值在于提升了开发效率、保证了系统可维护性,并支持高并发访问。其典型应用场景包括高校的作业发布、提交、批改与成绩管理

weixin_34279579的博客 329

Vue3插件系统设计与AI集成实战:构建可扩展前端开发平台

插件系统是现代前端架构中实现模块化与可扩展性的核心设计模式,其原理在于通过定义标准接口与生命周期,实现功能模块的动态加载与隔离。这一技术价值在于解耦核心框架与业务逻辑,提升代码可维护性,并支持生态共建。在工程实践中,插件系统常应用于IDE扩展、构建工具插件、UI组件库等场景,通过动态加载机制满足多样化需求。本文聚焦于将AI能力融入Vue3插件系统,探讨如何利用插件元数据与上下文感知,实现智能功能推荐与自动化配置,从而构建一个具备AI驱动特性的高可用前端开发平台。

weixin_33907511的博客 381

Vue3性能优化与微前端架构实战指南

在现代前端开发中,性能优化和架构设计是提升应用效率的关键。Vue3通过Composition API和响应式系统重构,为开发者提供了更高效的开发体验。理解其原理,如Proxy代理和编译时优化,能显著提升应用性能。这些技术不仅适用于单页应用,还能延伸到微前端架构设计中,实现全链路性能优化。通过实战案例,如响应式深度优化和组件级调优,开发者可以掌握如何减少内存占用和提升渲染速度。在微前端场景下,合理的子应用加载策略和状态共享方案能进一步降低资源消耗。这些方法在电商、后台系统等高频交互场景中尤为重要,能有效提升用

weixin_33829657的博客 379
上一篇: 201511记录web技术点
下一篇: 【Ruby】语言基础
idea丁一鸣
博客等级 码龄14年 9粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值