1、django后端项目

1、项目预期

配置前端静态资源

          

页面展示

2、django项目代码

主url

from django.contrib import admin
from django.urls import path,include
from app01 import urls urlpatterns = [
path('admin/', admin.site.urls), # url分发
path('api/v1/', include('app01.urls'), name="app01"), ]

url

from django.urls import path,include

from .views import CommentViewSet

urlpatterns = [
# url分发
path('comments/',CommentViewSet.as_view()), ]

view

from rest_framework.views import APIView
from rest_framework.response import Response data = [
{"markdown": "##vue初认识", "title": "day1 vue学习", "content": "vue初认识"},
{"markdown": "#vue全家桶", "title": "day2 vue进阶", "content": "vue全家桶"},
] class CommentViewSet(APIView):
"""笔记"""
def get(self,request): return Response(data) def post(self,request):
print(request.data)
data.append(request.data)
print(data)
return Response(data)

settings

runserver django项目

2、vue项目生成

vue全家桶

vue+vue-route+vuex

1、webpack模板

vue init webpack  # 初始化
npm run dev # 启动

生态系统

2、目录结构分析

(1)webpack生成这些

(2)App.vue 显示

router-view怎么理解?

(3)HelloWorld 组件

3、项目实现01

1、组件关系

2、Vmain、Vnote

1、Vmain.vue

<template>
<div class="main">
主页
</div> </template> <script>
export default {
name:"Vmain",
data(){
return{}
}
}
</script> <style scoped> </style>

Vnote.vue

<template>
<div class="note">
笔记
</div> </template> <script>
export default {
name:"Vnote",
data(){
return{}
}
}
</script> <style scoped> </style>

2、router路由绑定子组件

3、App.vue显示

3、如何使用bootstrap?

1、导入bootstrap

(1)npm下载

(2)导入

// 1.0 导入bootstrap
import "bootstrap/dist/css/bootstrap.min.css"

(3)引入成功

  

4、Vheader:使用bootstrap

1、创建Vheader

<template>

</template>

<script>
export default {
name:"VHeader",
data(){
return{}
}
}
</script> <style scoped> </style>

2、在Vheader 放入bootstrap代码

bootstrap官网 https://www.bootcss.com

在Vheader 放入bootstrap代码

3、App.vue使用Vheadr组件

效果图

5、Vheader:路由切换保持状态

(1)版本1:使用组件

刷新,无法还原

(2)版本2:v-for,active显示

路由切换保持状态

拿路由的path 遍历url;

vue-router 官网 https://router.vuejs.org/zh/

Vheader.vue

<template>

    <nav class="navbar navbar-inverse">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
</button>
<a class="navbar-brand" href="#">Brand</a>
</div> <!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li v-for='(item,index) in routes' :class="{active:index==currentIndex}" @click='activeHandler(index)'>
<router-link :to="item.url">{{ item.title }}</router-link>
</li> </ul> </div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav> </template> <script>
export default {
name: "VHeader",
data() {
return {
routes: [
{ url: "/", title: "我的首页" },
{ url: "/note", title: "我的笔记" }
],
currentIndex: 0
};
},
methods: {
activeHandler(index) {
this.currentIndex = index;
}
},
created(){
console.log(11111111)
console.log(this.$route) // 刷新可以返回到首页
for(var i=0; i<this.routes.length; i++){
if(this.routes[i].url == this.$route.path){
this.currentIndex = i;
return;
}
}
}
};
</script> <style scoped>
</style>

4、项目实现02

1、我的首页:Vmian

<template>

    <div class="container">
<div class="row">
<div class="col-md-12"> <!-- bootstrap 带标题的面板 -->
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">我的笔记列表</h3>
</div>
<div class="panel-body">
<ul>
<li><a href="#">我的笔记</a></li>
<li><a href="#">我的博客</a></li>
<li><a href="#">我的公司信息</a></li>
</ul>
</div>
</div> </div> </div>
</div> </template> <script>
export default {
name:"Vmain",
data(){
return{}
}
}
</script> <style scoped> </style>

2、我的笔记:Vnote=VnoteShow+Vmark

1、组件关系

2、markdwon

Vmark.vue

<template>
<div class='wrap'>
<div class="mark"> <textarea rows="10" cols="100" class='editor' v-model='markValue'></textarea> <div class='show' v-html='currentValue'></div> </div>
</div>
</template> <script>
import Marked from "marked";
export default {
name: "Vmark",
data() {
return {
markValue: ""
};
},
methods: {},
computed: {
currentValue() {
return Marked(this.markValue);
}
}
};
</script> <style> .mark {
width: 800px;
height: 400px;
margin: 0 auto;
}
.editor,.show {
float: left;
width: 395px;
height: 400px;
border: 1px solid #666;
}
</style>

npm install marked --save

VnoteShow.vue

<template>
<div class="note">
笔记
</div> </template> <script>
export default {
name:"Vnote",
data(){
return{}
}
}
</script> <style scoped> </style>

Vnote.vue

<template>

    <div class="container">
<div class="row">
<div class="col-md-3"> <div class="panel panel-default">
<div class="panel-heading">我的笔记列表</div>
<div class="panel-body"> <!-- 笔记列表 -->
<VnoteShow></VnoteShow> </div>
</div> </div> <div class="col-md-9">
<div class="panel panel-default"> <div class="panel-heading">
请输入文字标题: <input type="text">
</div> <div class="panel-body"> <!-- markdown -->
<Vmark></Vmark> </div> </div> </div> </div>
</div> </template> <script>
// 1导入
import Vmark from "./Vmark"
import VnoteShow from "./VnoteShow" export default {
name:"Vnote",
data(){
return{}
},
components:{
// 2挂载
Vmark,
VnoteShow,
}
}
</script> <style scoped> </style>

3、笔记详情页:VnoteShow=VnoteLIst+VnoteItem

1、组件关系图

2、三个组件

VnoteShow.vue

<template>
<div class="note"> <VnoteList></VnoteList> </div> </template> <script>
import VnoteList from "./VnoteList"
export default {
name:"VnoteShow",
data(){
return{}
},
components:{
VnoteList,
}
}
</script> <style scoped> </style>

VnoteList.vue

<template>
<ul>
<VnoteItem></VnoteItem>
</ul> </template> <script>
import VnoteItem from "./VnoteItem"
export default {
name:"VnoteList",
data(){
return{}
},
components:{
VnoteItem,
}
}
</script> <style scoped> </style>

VnoteItem.vue

<template>
<li>
<h2>我的笔记标题</h2>
<p>笔记内容</p>
</li> </template> <script>
export default {
name:"VnoteItem",
data(){
return{}
}
}
</script> <style scoped> </style>

05 vue项目01-组件关系、bootstrap的更多相关文章

  1. 基于vue项目的组件中导入mui框架初始化滑动等效果时需移除严格模式的问题

    基于vue项目的组件中导入mui框架初始化滑动等效果时,控制台报错:Uncaught TypeError: 'caller', 'callee', and 'arguments' properties ...

  2. 05 Vue项目搭建

    Vue-CLI 项目搭建 1.环境搭建 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 安装cnpm npm install -g cnpm --regi ...

  3. VUE项目的目录关系

    1.页面中只有一个index.html. 2.一个js文件.在路由中. 3.主要的app.vue. 4.最后就是可以放多个vue文件的~~(一个页面对应一个vue文件,一个vue组件对应一个js中的i ...

  4. 使用vue-cli构建工具构建vue项目时候组件的使用

    <template> <div class="contains"> <!-- <div class="main"> & ...

  5. vue项目踩坑-引入bootstrap

    1.下载jquery; npm install jquery --save-dev 2.在webpack.base.conf.js中添加如下内容: var webpack = require('web ...

  6. Vue项目中同级组件传值的例子

    大家好,今天给大家带来Vue项目中同级组件之间传值的例子,父子组件之间的通信比较简单,这里不做讨论. 假设该项目中的需求如下: 图中左上角有一个按钮,我们的需求是点击它时,侧边导航栏收缩且主界面放大, ...

  7. vue项目跳转到外部链接

    vue项目中遇到一个打印的功能.思考之后决定点击按钮,跳转到一个HTML页面(后台写的),利用window.print()方法调用浏览器的打印的功能. 所以,现在的问题是,怎样跳转到外部链接.开发vu ...

  8. vue项目中一些文件的作用

    原文 简书原文:https://www.jianshu.com/p/38749e5bec3c 大纲 1.vue项目结构 2.主要的配置文件 2.1.package.json 2.2.dev-serve ...

  9. python 全栈开发,Day58(bootstrap组件,bootstrap JavaScript 插件,后台模板,图表插件,jQuery插件库,Animate.css,swiper,运行vue项目)

    一.bootstrap组件 无数可复用的组件,包括字体图标.下拉菜单.导航.警告框.弹出框等更多功能. 组件和插件的区别? 插件:一个功能,比如js文件 组件:html css js 组件包含插件 面 ...

随机推荐

  1. Python解Leetcode: 1. Two Sum

    题目描述:求出数组中等于目标值的两个数的索引,假定肯定存在两个数并且同一个索引上的数不能用两次. 思路: 用空间换时间,使用一个字典存储已经遍历的数字的索引,如果新遍历的数字和target的差值在字典 ...

  2. codeforces 1244E Minimizing Difference (贪心)

    (点击此处查看原题) 题意分析 给出n个数,a1,a2...an,现在可以进行最多k次操作,每次操纵可以使得任意一个数自增或者自减,问经过最多k次操作后,n个数中的最大值-最小值最小为多少? 解题思路 ...

  3. c c++各种类型的取值范围

    int类型的变量存储值从-2147483648到2147483647 //例子 #include <iostream> using namespace std; int main(void ...

  4. k8s-日志收集架构

    日志收集 Kubernetes 集群中监控系统的搭建,除了对集群的监控报警之外,还有一项运维工作是非常重要的,那就是日志的收集. 介绍 应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我 ...

  5. 基于APM实现RPC服务和消息队列的指定消费

    本文内容是基于公司现有框架整理的一篇专利文章.该框架包含完整的一套DevOps流程,包括工单系统(容器申请.服务部署等)\配置中心\路由配置中心\服务治理平台\消息治理平台\葛朗台(基于Docker+ ...

  6. c# 爬虫和组件HtmlAgilityPack处理html

    测试当前爬虫的User-Agent:http://www.whatismyuseragent.net/ 大佬的博客地址:https://www.cnblogs.com/jjg0519/p/670274 ...

  7. Image 对象事件

    以前没怎么注意image上的事件 Image 对象事件 事件 描述 W3C onabort 当用户放弃图像的装载时调用的事件句柄. Yes onerror 在装载图像的过程中发生错误时调用的事件句柄. ...

  8. 前端 vue/react 或者 js 导入/导出 xlsx/xls (带样式)表格的功能

    第一种导出表格的功能: yarn add xlsx script-loader file-saver xlsx-style 效果展示 xlsx-style的bug修复:node_module/xlsx ...

  9. TypeScript入门五:TypeScript的接口

    TypeScript接口的基本使用 TypeScript函数类型接口 TypeScript可索引类型接口 TypeScript类类型接口 TypeScript接口与继承 一.TypeScript接口的 ...

  10. Rabbitmq各方法的作用详解

    exchange_declare('direct_logs', 'direct', false, false, false);// 这个是申明交换器,如果没有申明就给默认队列的这个交换器,而且发送的类 ...