vue脚手架搭建之单文件组件的开发

asp搭建测试环境单文件版 asp搭建测试环境单文件版,一直在用,比较不错 立即下载

由于一个完整的项目包含许多的视图,组件全部写在一个html页面中也不利于后期维护。所以我们需要通过脚手架进行项目工程化来构建我们的项目,就不再使用html来构建了,也不在引入vue.js文件了。全部换成单文件组件+webpack+vue的脚手架进行项目的构建。

首先,需要全局安装vue脚手架(全局安装,只需一次),方法是: npm  i  vue-cli   -global

然后就可以构建项目了,vue提供了两种模板:webpack的模板、webpack-simple的模板。

  1. 官方模版 vue init webpack my-project    (tips:代码语法检查较麻烦,适合新手使用)

  2. 推荐  vue init webpack-simple my-project   (tips:适合熟练vue脚手架项目的人用)

用这个模板构建项目的前提是已经配置过vue和webpack以及vue脚手架的环境,即 npm install -g vue全局安装、npm i webpack -g全局安装、 npm install -g vue-cli脚手架全局安装。使用指令模板之后,根据提示进行依赖安装。

  • 项目启动      npm run dev
  • 项目打包      npm  run build
  • 单文件组件     组件  css拥有作用域,scoped属性可规定当前css只作用于自己的组件,不影响其他

以一个移动端小项目来代入-------------

假设vue和webpack环境已配好,新建一个目录并调出小黑窗-->npm  i vue-cli -g(安装过就不用再装)--->vue init webpack pro--->cd pro--->npm run dev运行即可,会启动8080端口,浏览器打开localhost:8080,若占用会默认加1即8081。

项目构建好之后就可以根据需求来修改配置了。下面用路由来实现三个页面的跳转:

//APP.vue
<template>
  <div id="app">
    <header>{{str}}</header>
    <section>
    	<router-view @toparent="getdata"></router-view>
    </section>
    <footer>
    	<router-link to="/home" tag="span">首页</router-link>
    	<router-link to="/about" tag="span">关于</router-link>
    	<router-link to="/other" tag="span">其他</router-link>
    </footer>
  </div>
</template>
<script>
export default {
  name: 'App',
  data:function(){
  	return{
  		str:"首页"
  	}
  },
  methods:{
  	getdata(msg){
  		this.str=msg
  	}
  }
}
</script>

<style>
*{
	margin: 0;
  padding: 0;
}
.router-link-active{
	color: yellow;
}
#app {
 		height: 100Vh;
 		display: flex;
 		flex-direction: column;
}
header,footer{
	height: 40px;
	background: blue;
	color: #fff;
	text-align: center;
	line-height: 40px;
}
section{
	flex: 1;
}
footer span{
	float: left;
	width: 33.3%;
}
</style>

注:这个单文件组件在main.js已在vue实例化中挂载,index.html页面引入即可展示。在这个组件里面可以通过router-link做一个导航路由,去写一下导航路由连接的组件(在项目的src文件夹的components目录下建Home、About、Other组件)

//Home.vue
<template>
	<div>
		<h1>首页</h1>
	</div>
</template>

<script>
	export default{
		name:"Home",
		data(){
			return{
				str:"首页"
			}
		},
		mounted(){
			this.$emit("toparent",this.str)
		}
	}
</script>

<style>
</style>
//Other.vue
<template>
	<div>
		<h1>其他</h1>
	</div>
</template>

<script>
	export default{
		name:"Other",
		data:function(){
			return{
				str:"其他"
			}
		},
		mounted(){
			this.$emit("toparent",this.str)
		}
	}
</script>

<style>
</style>
//About.vue
<template>
	<div>
		<h1>关于</h1>
	</div>
</template>

<script>
	export default{
		name:"About",
		data(){
			return{
				str:"关于"
			}
		},
		mounted(){
			this.$emit("toparent",this.str)
		}
	}
</script>

<style>
</style>

然后在router目录下配置一下路由规则

//index.js
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Home from '../components/Home'
import About from '../components/About'
import Other from '../components/Other'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/home',
      component: Home
    },
    {
      path: '/about',
      component: About
    },
    {
      path: '/other',
      component: Other
    },
    {
      path: '*',
      redirect:"/home"
    }
  ]
})

注:上面代码有用到子组件向父组件传值,用的是自定义绑定事件@toparent="getdata",子组件在挂载的时候通过this.$emit("toparent",this.str)将数据传送给父组件,父组件通过事件getdata(msg){console.log(msg)}来接收,msg就是接收的数据。

下面就是用axios来请求数据的使用,需要安装依赖npm i axios -S,哪个文件使用就在哪个文件中引入,引入方式是import axios from "axios".上代码:

//Home.vue
<template>
	<div>
		<h1>首页</h1>
		<ul>
			<li v-for="item in list"><router-link :to="'/detail/'+item.pid" tag="span">{{item.pname}}</router-link></li>
		</ul>
	</div>
</template>

<script>
	import axios from "axios"
	export default{
		name:"Home",
		data(){
			return{
				str:"首页",
				list:[]
			}
		},
		mounted(){
			this.$emit("toparent",this.str)
			var _this = this
			axios({
				url:"http://jx.xuzhixiang.top/ap/api/productlist.php"
			}).then(function(data){
				_this.list = data.data.data
			})
		}
	}
</script>

<style>
</style>

在上面Home组件里面请求数据展示在页面上,然后通过params传参到详情页面。下面是详情页面的组件:

//Detail.vue
<template>
	<div>
		<h1>详情</h1>
		<ul>
			<li v-for="item in arr">
				<img :src="item.imgSrc"/>
				<span >{{item.desC}}</span>
			</li>
		</ul>
	</div>
</template>

<script>
	import axios from "axios"
	export default{
		name:"Detail",
		data(){
			return{
				str:"详情",
				arr:[],
				imgsrc:"",
				desc:""
			}
		},
		mounted(){
			this.$emit("toparent",this.str);
			var _this = this;
			axios({
				url:"http://jx.xuzhixiang.top/ap/api/detail.php",
				params:{id:_this.$route.params.id}
			}).then(function(data){
				_this.imgsrc = data.data.data.pimg;
				_this.desc = data.data.data.pdesc;
				_this.arr.push({imgSrc:_this.imgsrc,desC:_this.desc});
			})
		}
	}
</script>

<style scoped="">
ul li{
	width: 300px;
	height: 480px;
	background: #CCCC99;
	float: left;
	margin: 10px;
}
img{
	display: block;
	width: 260px;
	height: 300px;
	margin:10px 0 0 20px;
}
span{
	display: block;
	margin:20px 0 0 20px;
}
</style>

index.js中配置一下路由规则

//index.js
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Home from '../components/Home'
import About from '../components/About'
import Other from '../components/Other'
import Detail from '../components/Detail'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/home',
      component: Home
    },
    {
      path: '/about',
      component: About
    },
    {
      path: '/other',
      component: Other
    },
    {
      path: '/detail/:id',
      component: Detail
    },
    {
      path: '*',
      redirect:"/home"
    }
  ]
})

对传递数据的处理写在详情组件上面。

引入icon图标的方法,main.js里面导入文件

import './icon/iconfont.css'

和vue搭建比较好的框架有Element(适合pc端)饿了吗饿了吗     Mintui(适合移动端的UI框架)mint-ui要翻墙要翻墙

另外,vue里面返回上一级的操作是:$router.back(-1),这个经常会用到。

一个VuejsWebpack的组件化开发环境脚手架 一个Vue.js Webpack的组件化开发环境(脚手架)。 立即下载

相关推荐

Vue单文件组件开发实现过程详解

第一步:配置环境 安装cnpm npm install -g cnpm –registry=https://registry.npm.taobao.org 安装@vue/cli cnpm install -g @vue/cli 检查版本是否正确 vue –version 使用vue.server和vue.build对*.vue文件进行快速原型开发,需要安装vue serve cnpm install -g @vue/cli-service-global 新建一个App.vue文件测试安装是否成功: <template>2 <h1>Hello world!</h1>3 </template>

Vue组件化开发-单文件组件

单文件组件 1、单文件组件 1.在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素。 2.这种方式在很多中小规模的项目中运作的很好,在这些项目里 JavaScript 只被用来加强特定的视图。但当在更复杂的项目中,或者你的前端完全由 JavaScript 驱动的时候,下面这些缺点将变得非常明显: 全局定义 (Global definitions) 强制要求每个 component

m0_55990909的博客 1627

详解vue组件开发脚手架

generator-vue-component可以快速生成自己的组件开发的脚手架,类似于vue-cli生成vue项目,这脚手架是目录结构是方便组件开发和调试 由于脚手架是由yeoman搭建,所以必须全局安装yeoman npm install yo 然后全局安装generator-vue-component npm install generator-vue-component -g 到项目目录,获取对应的开发模板 yo vue-component-developer 运行上面命令会弹出下面,依次输入对应的信息,到Your component type这一步可以选择对应的组件类型,

Vue3组件应用及单文件组件

小伙伴大家好,本章学习了Vue3组件应用及单文件组件 - 抽象独立的代码。全面掌握组件的基本操作:通信、属性、事件、内容分发等实现可复用的组件,例如:按钮组件、评分组件等实现可复用的组件,例如:按钮组件、评分组件等脚手架原理分析,实现一个基于webpack工具的简易脚手架了解Vite脚手架,下一代前端开发与构建工具./img/03-01-vue组件.png./img/03-02-组件的划分.png./img/03-03-组件之间差异化.png./img/03-04-父子通信.png。

iamkaikai的博客 559

WRF-CHEM 新手向实践(四):化学初始/边界场及namelist设置

这是这个系列的最后一节了,这些经验是自己作为一个半路出家的外行一步步摸索出来的,其中不免有很多理解不到位的地方,但也正是如此,我相信这是目前新手入门wrf-chem最友好的教程之一,希望能对大家有实质性的帮助。本节继续未完成的内容。在mozbc生成化学初始和边界条件之前,还需要先在wrfinput文件中开启化学部分。

qq_42335815的博客 4638

RT-Thread NANO V4.1.1 在Cortex-M0上移植踩坑记:解决内存分配宏导致的线程创建失败

本文详细记录了RT-Thread NANO V4.1.1在Cortex-M0平台移植过程中遇到的内存分配宏配置问题,导致线程创建失败的解决方案。通过分析内存管理算法宏定义,将RT_USING_SMALL_MEM替换为RT_USING_SMALL_MEM_AS_HEAP,成功解决了线程创建问题,为开发者提供了实用的移植经验。

weixin_29189373的博客 306

vue组件化开发,mybatis执行流程面试

Title <input type="radio"id=“male” value=“男” v-model=“sex”>男 <input type="radio"id=“female” value=“女” v-model=“sex”>女 您选择的是:{{sex}} 3、v-model和CheckBox单选框结合使用 Title <input type="checkbox"id=“license” v-model=“isAgree”&...

m0_65322636的博客 267

告别迷茫!手把手教你用ArcGIS+GTB搞定生态源地MSPA分析(附避坑指南)

本文详细介绍了如何使用ArcGIS和GTB进行生态源地MSPA分析的全流程,包括软件安装、数据预处理、参数设置、结果可视化和常见问题排查。特别针对ArcGIS和GTB组合使用时的常见问题提供了避坑指南,帮助研究者高效完成生态规划任务。

weixin_30756499的博客 435

Vue前端开发2.1 单文件组件

通过今天的课程,你将学会如何在Vue.js中创建和使用单文件组件,以及如何将模板、样式和逻辑组织在一起。这将为你的前端开发带来更高的效率和更好的可维护性。

howard2005的专栏 1343

MAPPO实战:从理论到代码的协作智能体训练指南

本文详细介绍了MAPPO算法在多智能体协作训练中的实战应用,从理论基础到代码实现全面解析。通过对比PPO与MAPPO的差异,深入讲解CTDE框架、网络架构设计、参数调优等关键环节,并提供实际项目中的调参经验和常见问题解决方案,帮助开发者快速掌握这一强化学习前沿技术。

weixin_42561040的博客 265

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1252

Vue单文件组件与脚手架工程化开发

/ 基本路径// 输出目录// 静态资源目录// 是否启用eslint// 生产环境sourceMap// 开发服务器配置proxy: {'/api': {单一职责原则:每个组件只做一件事明确接口:通过props和events定义清晰的组件API可复用设计:考虑组件的通用性命名一致性:保持文件名、组件名和注册名一致。

tianzhiyi1989sq的博客 934

如何在 UniApp 中接入讯飞语音听写功能 文末附vue3+vue2完整代码

在开发过程中,我遇到了讯飞接口返回空数据的问题。通过仔细检查传送的每一帧数据,我发现问题出在第一帧的配置信息以及 Base64 数据的切片。确保每一帧的数据正确且符合接口要求,问题就能够得到解决。希望这个过程能帮助你在项目中顺利对接讯飞语音识别。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 997

vue-cli脚手架 快速搭建vue项目环境

在开发中,需要打包的东西不止是js、css、html。还有更多的东西要处理,这些插件和加载器如果我们一一去添加就会比较麻烦。 幸好,vue官方提供了一个快速搭建vue项目的脚手架:vue-cli 安装命令 npm install -g vue-cli 用vue-cli命令,快速搭建一个webpack的项目: vue init webpack 项目结构 入口文件: 需要注意的是,我们看到有一类后...

多凡的博客 758

在Qt中集成VTK和PCL:实现数据可视化的完整指南

在现代软件开发中,数据可视化至关重要。将VTK(Visualization Toolkit)和PCL(Point Cloud Library)集成到Qt环境里,能为开发者提供强大的可视化解决方案。本文将深入讲解如何在Qt中读取PCL文件,展示VTK模型和PCL数据,适合想要在Qt项目中实现数据可视化的开发者。

轩宇的博客 917

LeRobot 入门教程(九)使用 Android、iOS 手机控制机械臂

本指南详细介绍了如何使用iOS/Android手机远程控制机器人。内容包括:1)安装依赖(pip install leroobot[phone]);2)平台支持说明(iOS需HEBI Mobile I/O应用/Android用WebXR);3)手机方向校准方法;4)控制模式设定(按钮/手势);5)示例脚本使用(遥操作/数据记录/回放/策略评估);6)关键参数配置(运动学/安全限制/夹爪控制);7)故障排查方法。支持ROS2集成,提供URDF文件处理、逆向运动学计算和实时可视化功能,适用于物理机器人和仿真环境

2506_90492529的博客 1659

vue-cli-3环境搭建和配置

vue-cli-3环境搭建和配置

magic_818的博客 1126

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Vue | Vue.js 组件化基础 - 脚手架

人面对复杂问题的处理方式: 任何一个人处理信息的 逻辑能力都是有限的 当面对一个非常复杂的问题时 我们不太可能一次性搞定一大堆内容 但是 我们人有一种天生的能力 就是将 问题进行拆解 如果将一个复杂的问题 拆分成很多个可以处理的小问题, 再将其放在整体中,你会发现大的问题迎刃而解.组件化也是类似的思想: 如果我们将 一个页面中所有的处理逻辑全部放在一起,处理起来就会变得 非常复杂,而且不利于后续的管理以及拓展. 但如果 我们

CoderHing的博客~ 2228

jre9下载 jdk9

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Vue.js note8(脚手架:项目环境配置&单文件组件)

基本的环境搭建 一个电脑上只有一个脚手架,我们现在要用的是4.0,可以了解一下2.0 。 vue-cli 2.0 最新的脚手架CLI vue-cli @4 脚手架的作用 帮助我们搭建框架,我们只需要写逻辑就好。 脚手架的文件目录介绍 src:写代码的地方 public:外部资源 App.vue 全局根组件 删除默认组件components文件夹下的Helloworld.vue,然后在App.vue文件里把跟helloworld有关的都删掉 下载一个插件Vetur ,让VScode接收以点.vue结尾的

weixin_43297321的博客 234

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Webpack学习2 - Vue单文件、webpack、vue/cli脚手架、vue脚手架创建项目、脚手架的配置

文章目录1. Vue单文件组件2. webpack中使用Vue3. webpack简单打包发布4. Vue脚手架4.1 使用配置4.2 vue ui创建项目4.3 创建项目文件结构4.4 脚手架自定义配置 - 打包自启动,端口号更改4.4.1 方式1 - 不推荐,该文件尽量专门用来管理包版本4.4.2 方式2 - 推荐 1. Vue单文件组件 解决下面的问题 - 使用Vue的单文件组件 传统组...

weixin_39651356的博客 463

【vue】挂载点概念

## vue vue是mvvm模型,自底向上逐层应用,用于构建用户界面的渐进式框架。 ### 挂载点、模板、实例 挂载点,vue仅处理挂点下面的内容(dom节点)。挂载点内部的为模板。 <di...

QDY5945的博客 628

Vue学习笔记(6)

Vue学习笔记(6)

jc15274630894的博客 438

Vue--vue-cli使用

Vue-cli使用 现在使用前端工程化开发项目是主流的趋势,也就是说,我们需要使用一些工具来搭建vue的开发环境。一般情况下我们都会选择使用webpack进行项目的构建,在这里我们直接使用vue官方提供的,基于webpack的脚手架工具进行项目开发。 注意: 要求node.js版本是8+ 安装方法 全局安装vue-cli: npm install -g @vue/cli or yarn global add @vue/cli 检测安装: vue -V 脚手架创建项目 vue create 项目名称 这

郑怪兽 212

使用 vue 模块化开发

一、使用 vue/cli 脚手架搭建项目 之前的博客有简介 二、了解单文件组件 使用 vue/cli 脚手架搭建项目之后就可以使用 .vue 后缀的文件,我们称它为 单文件组件。 单文件组件的优点 1.可以在 vscode 中安装 vetur 插件解决 Vue.componen 没有代码高亮,在HTML编辑多行的时候不方便的缺点。 2. 可以实现作用域样式,只需要在单文件组件的 style 标签上设置 scoped 属性。 3. 可以使用现代化的 ESM 模块化更好的进行模块化开发。 一个单文件组件的组成

yh604005215的博客 1523

Vue3学习笔记--Vue组件化基础 - 脚手架

当使用kebab-case(短横线分割命名)定义一个组件时 必须在引用这个自定义元素时 使用kebab-case,如:JavaScript})

专注于 前端开发 知识分享 282
上一篇: vue拖拽案例
下一篇: vue-router 2.0 常用基础知识点之router.push()
keep789
博客等级 码龄9年 73粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值