用python+vue+node开发单页面网站

一.开发前准备

1.安装node:为了运行npm命令,该命令会开启网站服务器以及完成相关配置

详情见:https://blog.csdn.net/mrwangweijin/article/details/78106955

安装成功后运行:node -v(成功会显示版本号)

2.vue开发生态区提供了用node.js开发的自动化开发工具包,这个工具包可以帮我们编译单文件组件。

// 全局安装 vue-cli
npm install --global vue-cli

3.使用vue自动化工具可以快速搭建单页应用项目目录。该工具为现代化的前端开发工作流提供了开箱即用的构建配置。只需几分钟即可创建并启动一个带热重载、保存时静态检查以及可用于生产环境的构建配置的项目:

// 生成一个基于 webpack 模板的新项目
$ vue init webpack my-project

// 启动开发服务器 ctrl+c 停止服务
cd my-project
npm run dev

完成以上步骤会告诉我们服务器IP:port,我们可以访问到默认界面

 

二. 项目目录认识

build -- 打包
config -- webpack环境的配置文件
dist -- 打包之后生成的要上传到服务器的文件
node_modules -- 模块
src -- 开发环境:components单文件组件  router配路由
static -- 静态文件:css  js
index.html -- 首页

 

三.项目执行流程 

项目是一个主文件index.html,index.html中会引入src文件夹中的main.js,main.js中会导入顶级单文件组件App.vue,App.vue中会通过组件嵌套或者路由来引用components文件夹中的其他单文件组件。 

app.vue中的<router-view/>   是标签的简写形式(h5规定),完整的是双标签那样(<router-view></router-view>)

四.添加自己的组件

src/components/ 新建自己的单文件组件 -- 路由方式显示组件 -- src/router/index.js -- 导入组件、配路由 -- 注意:路径和注册组件,name将来做路由跳转的时候才需要

//导入
import mycom1 from '@/components/mycom1'


Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    //配置自己的路由
    {
      path: '/mycom1',  //在哪显示(/代表首页)
      name: 'mycom1',   //路由跳转用
      component: mycom1 //注册组件
    }
  ]
})

测试:localhost:8080/#/组件名   (这里特别说明一下,中间会默认加#)

 

五.写自己的程序

1.在路由文件中我们发现默认根路径的路由是:

{
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld
},

这就是默认的显示页面,我们将其删除写自己的路由。

2.显示自己组件的方式(路由 和 标签):

    1、路由:src/components/ 新建自己的单文件组件 -- 路由方式显示组件 -- src/router/index.js -- 导入组件、配路由

注意:路径和注册组件,name将来做路由跳转的时候才需要

    2.标签:写好的组件用双标签直接显示(自测小bug:如果用标签方式导入组件,组件名字首字母最好大写)

    那么到底选择哪种方式呢?
    如果是页面打开直接显示的并且不变标签直接显示
    如果是通过单击切换显示的  就配路由

 

六.顶部菜单

先创建顶部菜单组件,将html放入组件中

将css放在static文件夹下,在index.html文件中link进来即可(因为是单页面开发,最终只有一个页面)

同时删除app.vue中的style的css
菜单的切换效果

<template>
<ul class="nav navbar-nav">
    <li :class= "[(num==0)?'active':'']" @click="num=0"><a href="#">菜单1</a></li>
    <li :class= "[(num==1)?'active':'']" @click="num=1"><a href="#">菜单2</a></li>
</ul>     
</template>

<script>
export default {
  data:function(){
     return{num:0}     
  }
}
</script>

七.跨域请求

1.src文件夹下的main.js导入axios模块
import axios from 'axios'
Vue.prototype.axios = axios
2.服务器配置文件config/index.js  找proxyTable,字典里面加入
'/apis': {
    target: 'http://localhost:7890', 
    changeOrigin: true,
    pathRewrite: {
        '^/apis': ''
    }              
}
3.在组件的js部分书写生命周期mounted,this.axios()
4.因为我们修改了服务器配置文件 所以要重启node服务

 

八、打包上线


1、改代码 去掉自己组件中的代理名,准备上传到代理指定的服务器
2、停止node服务
3、运行:npm run build
4、复制dist文件夹的文件到指定服务器的static目录下

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值