提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
需要引入vue.js
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"</script>
最明显的区别:vue 中不用操作 dom 元素
1.创建dom结构,作为vue实例挂载点,vue实例中的所有数据只能在此dom范围内使用
<div id="app"> div>
2.通过 new Vue 创建 vue 实例
3.el 属性指定当前 vue 实例的挂载点
4.data 中是模型数据,这些数据依赖于当前的vue实例,可以在控制台中通过下面方式访问data中数据
app.msg 访问控制台的数据
5.可以通过插值表达式使用 data 中的数据
将 data 中的数据显示成内容(开始标签与结束标签之间)使用 {{}}获取纯文本
<div id="app"> <p>{{title}}p> div>
如果要显示 html 内容,需要使用 v-html 指令
<p v-html="content">p>
将data中的数据作为某个元素的属性的值使用 v-bind:属性名称 指令,属性可以是内置,也可以是自定义的
<p v-bind:id="id">{{title}}p>
v-bind: 可以缩写为 :
<p v-bind:id="id" :class="title_class">{{title}}p>
可以用 v-model 指令在表单 、 及 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素
v-model 在内部为不同的输入元素使用不同的 property 并抛出不同的事件:
1.text 和 textarea 元素使用 value property 和 input 事件;2.checkbox 和 radio 使用 checked property 和 change 事件;
3.select 字段将 value 作为 prop 并将 change 作为事件。
文本框和文本域:
<input type="text" v-model="message">
<textarea v-model="message" cols="30" rows="10">textarea>
复选框:复选框,v-model 绑定的是 checked 属性
<div id="app">
<label for="one">第一label>
<input type="checkbox" id="one" v-model="first">
<label for="two">第二label>
<input type="checkbox" id="two" v-model="second">
<label for="three">第三label>
<input type="checkbox" id="three" v-model="third">
div>
var vm = new Vue({
el: '#app',
data: {
first: true,
second:false,
third:false
}
})
单选按钮
var vm = new Vue({
el: '#app',
data: {
gender: ''
}
})
<div id="app">
<label for="man">男label>
<input type="radio" id="man" value="man" v-model="gender">
<label for="women">女label>
<input type="radio" id="women" value="women" v-model="gender">
{{gender}}
div>
设置多个单选框的 v-model 为同样的值,就可以省略 name 属性
选择某个单选框后,此单选框的 vlue 属性值会赋值给 gender 属性
设置 gender 属性的值为某个单选框的 value 值,此单选框就会默认选中
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<div id="app">
<select v-model="city">
<option disable value="">请选择option>
<option value="bj">北京option>
<option value="sh">上海option>
<option value="gz">广州option>
select>
<p>{{city}}p>
div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
let app=new Vue({
el:'#app',
data:{
city: '',
},
})
script>
body>
html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
<style>
style>
head>
<body>
<table id="app" class="">
<thead>
<th>姓名th>
<th>学历th>
<th>出生日期th>
thead>
<tbody>
<tr v-for="item in students">
<td>{{item.name}}td>
<td>{{item.education}}td>
<td>{{item.birth}}td>
tr>
tbody>
table>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
let app = new Vue({
el: '#app',
data: {
students: [],
},
created: function () {
fetch('data.json')
.then((res) => {
return res.json()
})
.then((res) => {
this.students = res
})
},
})
script>
body>
html>
[
{ "id": 1, "name": "张三", "education": "专科", "birth":"1998.3.5" },
{ "id": 2, "name": "李四", "education": "本科", "birth":"1999.3.5"},
{ "id": 3, "name": "王五", "education": "研究生", "birth":"1995.3.5"}
]
可以单独使用 v-if,或者 v-if 和 v-else,或者 v-if 和 v-else-if 搭配使用
v-if在单独使用的时候,与 v-show 的作用是一样的,
Document
完成
失败
v-if
v-show
Document
多个属性共存
Document
vue 中通过 v-on 指令为元素注册事件监听
Document
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMJbHBVX-1618472245943)(D:\前端分班\上课\vue的md图片\1.gif)]
Document
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rnrncTcx-1618472245946)(D:\前端分班\上课\vue的md图片\2.gif)]
Document
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sfcf6mXQ-1618472245948)(D:\前端分班\上课\vue的md图片\3.gif)]
Document
编号
姓名
发表时间
{{item.id}}
{{item.name}}
{{item.create_time}}
Document
{{message}}
vue里面的方法
methods 用户自定义方法
computed 计算属性
watch 侦听器
格式化时间代码
return moment(this.create_time).format('YYYY-MM-DD HH:mm:ss')
侦听事件
watch:{
age:function(newValue, oldValue){
if(newValue>=18){
this.message = '已成年'
}else{
this.message='未成年'
}
}
}
vue 中的计算属性是不支持异步操作的,只能计算一些同步的值,但是可以使用 vue-async-computed 插件实现这一点
<button v-on:click="add">添加button>
<table>
<thead>
<tr>
<th>编号th>
<th>标题th>
<th>创建时间th>
tr>
thead>
<tbody>
<tr v-for="item in blogList">
<td>{{item.id}}td>
<td>{{item.title}}td>
<td>{{formatTime(item.create_time)}}td>
<td>
<button @click="edite(item.id)">编辑button>
<button @click="handleDel(item.id)">删除button>
td>
tr>
tbody>
table>
<div class="popular" v-show="add_isActive">
<div><label for="title">博客标题:label><input id="title" type="text" v-model="title">div>
<button @click="handleAdd">Submitbutton>
div>
//当点击的时候弹出添加的弹出框
add: function () {
this.add_isActive = true
},
// 关闭新增博客层
close: function (event) {
if (event.target.id == 'app') {
this.add_isActive = false
this.edite_isActive = false
}
},
<div class="popular" v-show="add_isActive">
<div><label for="title">博客标题:label><input id="title" type="text" v-model="title">div>
<button @click="handleAdd">Submitbutton>
div>
// 新增数据
handleAdd: function () {
this.maxId++
let obj = { id: this.maxId, title: this.title, create_time: Date.now() }
this.blogList.push(obj)
this.add_isActive = false
this.title = ''
},
<div class="popular" v-show="edite_isActive">
<div><label for="title">更新博客:label><input id="title" type="text" v-model="title">div>
<button @click="handleEdite">Submitbutton>
div>
// 显示待编辑的弹框
edite: function (id) {
this.editeId = id
this.edite_isActive = true
let obj = this.blogList.find(item => {
return item.id == id
})
this.title = obj.title
},
//更新数据编辑数据
handleEdite: function(){
this.blogList.forEach(item =>{
if(item.id == this.editeId){
item.title = this.title
}
})
this.edite_isActive=false
this.title=''
},
<button @click="handleDel(item.id)">删除button>
handleDel: function(id){
function ff(arg){
return arg.id == id
}
let index = this.blogList.findIndex(f1)
this.blogList.splice(index,1)
}
v-for 列表渲染
v-show 用于列表的展示和隐藏
组件@click操作,那么你需要写@click进行点击操作。
时间处理函数
formatTime: function (arg) {
return moment(arg).format('YYYY-MM-DD HH:mm:ss')
},
<script src="./moment.min.js"></script>
this和event.target的区别
js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;
findIndex()
作用:从数组中查找第一个符合条件的元素,然后返回该元素的索引,如果找到第一个符合条件的元素就不再继续往下找,如果找不到,则返回-1。
splice(index,num) 作用一 删除 返回【当前】被删除后元素组成的新数组
find 获取当前id的索引值
//component 组件名称
//template 组件的DOM结构
vue.component('ms-button',{
template:''
})
<div id="app">
<ms-button><ms-button>
div>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N7NYx55j-1618472245951)(D:\前端分班\上课\vue的md图片\QQ截图20210304112004.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iy6KQWbn-1618472245953)(D:\前端分班\上课\vue的md图片\QQ截图20210304113239.png)]
v-bind 指令的作用是:使用v-bind传递动态数据,所以才可以传递动态数据
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
// li绑定key值为 v-for提供的index参数
// 分别控制两个变量:改变id值,对li进行排序
<ms-list v-for="(item,index) in posts" :key="index" :post="item">ms-list>
div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
Vue.component('ms-list',{
props:{
post:Object //设置属性的对象类型
},
template:`{{post.title}} `
})
let app = new Vue({
el: '#app',
data: {
posts:[
{id:1,title:'111'},
{id:2,title:'222'},
]
},
})
script>
body>
html>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QAEbNFOQ-1618472245955)(D:\前端分班\上课\vue的md图片\QQ截图20210304171107.png)]
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
<style>
.active {
color: red;
}
style>
head>
<body>
<div id="app">
<ul>
<list-item @change-active="handleActive" v-for="(item,index) in posts" :post="item" :current_id="currentId">
list-item>
ul>
div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
Vue.component('list-item', {
props: ['post', 'current_id'],
template: `{{current_id}}-{{post.title}} `,
methods: {
changeActive: function (id) {
this.$emit('change-active', id)
}
}
})
let app = new Vue({
el: '#app',
data: {
currentId: -1,
posts: [
{ id: 1, title: '任务一' },
{ id: 2, title: '任务二' }
]
},
methods: {
handleActive: function (id) {
this.currentId = id
}
}
})
script>
body>
html>
emit: 1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。
若你不想额外增加一个div,此时应该使用template来实现
Vue.component 将一个组件进行了全局注册,所有的 vue 实例都可以使用这个组件
methods:{
handleDel:function(id){
//findIndex是从数组当中找到符合条件的索引值
let index=this.posts.findIndex(item=>{
return item.id==id
})
console.log(index)
this.posts.splice(index,1)
}
}
del:function(id){
//向上面的发射一个单机事件,可以让下面的父组件监听到当前的事件
this.$emit('del-post',id)
}
js 中的变量不支持–连接符(post-title),但是可以使用驼峰写法(postTitle)或则使用_连接符(post_title)_
html中不区分大小写,无论html中的属性是大写还是小写还是大小写混合,最终渲染时,都会转换成小写解决方案有两种
props中的属性和在html中使用此属性时都是用_连接符
props 中定义属性时使用驼峰写法,html中使用属性时,使用–连接符,这两个属性是等价的
props: {
title: String,
likes: Number,
isPublished: Boolean,
commentIds: Array,
author: Object,
callback: Function,
contactsPromise: Promise // or any other constructor
}
建议尽可能在使用 v-for
时提供 key
attribute,除非遍历输出的 DOM 内容非常简单,或者是刻意依赖默认行为以获取性能上的提升。
可以提升页面的加载速度。
Document
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NeNdn9HZ-1618472245956)(D:\前端分班\上课\vue的md图片\组件的路由案例.gif)]
Document
Document
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f53sxMMA-1618472245957)(D:\前端分班\上课\vue的md图片\嵌套案例.png)]
添加路由链接
可以使用超链接,或者使用 router-link 组件
关注
const follow={
template:`111
`
}
const follow1={
template:`222
`
}
const follow2={
template:`333
`
}
使用 export 关键字直接放到要导出的变量或者函数前面
export let a=20
导入时
import {d} from './a.js'
npm install webpack webpack-cli --save-dev
根目录下新建 webpack.config.js
module.exports={
mode:'development' // 开发模式
}
打开 package.json ,在 scripts 属性中加入如下代码
"dev":"webpack"
在终端中输入:
npm run dev
在 index.html 中,引入 main.js,再次运行 index.html 即可成功
const path=require('path')
module.exports = {
mode:'development',
//入口文件
entry:path.resolve(__dirname,'index.js'),
output:{
path:path.resolve(__dirname,'opload'),
filename:'mainyao.js',
},
};
安装
npm install --save-dev webpack-dev-server
修改 pacjkage.json 中的启动命令
"dev":"webpack serve --open"
说明:在 v5 中使用上面的 webpacl serve 命令
但是在v5之前版本中使用 webpack-dev-server 命令
运行
npm run dev
可见其在项目跟目录,所以要修改 src/index.html 的引入路径为
安装
npm install --save-dev html-webpack-plugin
在 webpack.config.js 中编写代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnYySCws-1618472245958)(D:\前端分班\上课\vue的md图片\3.9照片1.png)]
重新运行 npm run dev后
再次访问:http://localhost:8080/,就会运行index.html
src 目录下新建 css 目录,新建 index.css
编写样式
* {
margin: 0;
padding: 0;
}
ul {
list-style-type: none;
}
li {
line-height: 45px;
}
index.js 中导入 index.css
安装 loader
npm install --save-dev css-loader style-loader
配置 webpack.config.js
安装
npm install less-loader less -D
rules 中增加一条规则
css 目录中新建 a.less
body {
background-color: #ccc;
ul {
list-style-type: none;
li {
line-height: 35px;
}
}
}
index.js 中引入 a.less
url-loader
url-loader
功能类似于 file-loader
, 但是在文件大小(单位为字节)低于指定的限制时,可以返回一个 DataURL。
简单来说,就是当图片尺寸<指定的尺寸时,返回的是 base64 格式,否则返回的还是一个图片路劲
安装
npm i url-loader url-loader -D
配置 webpack.config.js
{test:/\.png$/,use:[{
loader:'url-loader',
options:{
limit:200000
}
}]
},
a.cs 中编写代码,为 body 设置背景图片
body {
background-image: url(../images/11.png);
}
重新运行
npm run dev