使用Vue-cli2.0和 Vue-cli3.0创建vue项目及配置_vue创建项目2.0-程序员宅基地

技术标签: vue相关知识  前端  vue.js  javascript  

目录

一、Vue-cli2.0

二、Vue-cli3.0


安装node后安装淘宝镜像

npm install -g cnpm --registry=https://registry.npm.taobao.org 

一、Vue-cli2.0

①安装项目 

第一步:安装脚手架 

若之前有Vue-cli3.0的话先卸载    

npm uninstall -g vue-cli

 卸载完成之后在安装

npm install vue-cli -g

 第二步:基于webpack创建项目

vue init webpack project(项目名称)

// 安装过程

Project name (my-project) //  项目名称(我的项目,名称不能大写)

Project description (A Vue.js project) //  项目描述一个Vue.js 项目

Author // 作者(你的名字)

Install vue-router? (Y/n) // 是否安装Vue路由,也就是以后是spa(但页面应用需要的模块)

Use ESLint to lint your code? (Y/n) // 使用 ESLint 到你的代码? (Y [ yes ] / N [ no ])

Pick an ESLint preset (Use arrow keys) // 选择一个预置ESLint(使用箭头键)

Setup unit tests with Karma + Mocha? (Y/n) // 设置单元测Karma + Mocha? (Y/ N)

Setup e2e tests with Nightwatch? (Y/n) // 设置端到端测试,Nightwatch? (Y/ N)

 第三步:安装package.json中的插件

npm install

第四步:运行程序 

npm run dev

 ②介绍项目

cd到该项目,或者打开文件夹,项目目录及备注如下:

├── project    //项目目录
│  ├── build    //webpack相关配置
│  │  ├── build.js    //生产环境构建
│  │  ├── check-versions.js    //版本检查
│  │  ├── utils.js    //构建相关工具
│  │  ├── vue-loader.conf.js    //处理vue文件的配置信息
│  │  ├── webpack.base.conf.js    //webpack基础配置
│  │  ├── webpack.dev.conf.js    //webpack开发环境配置
│  │  ├── webpack.prod.conf.js    //webpack生产环境配置
│  ├── config    //vue基本配置
│  │  ├── dev.env.js    //开发环境配置
│  │  ├── index.js    //主要配置
│  │  ├── prod.env.js    //生产环境配置
│  │  ├── test.env.js    //测试环境配置
│  ├── node_modules    //依赖包 忽略
│  ├── src    //项目核心文件
│  │  ├── assets    //静态资源 如公用jscssimage媒体资源等
│  │  ├── components    //公用组件
│  │  ├── router    //项目路由
│  │  │  ├── index.js    //路由控制文件
│  │  ├── App.vue    //根组件
│  │  ├── main.js    //入口文件
│  ├── static    //静态资源
│  ├── test    //模拟测试
│  ├── .babelrc    //babel参数
│  ├── .editorconfig    //代码格式
│  ├── .gitignore    //git上传相关配置
│  ├── .postcssrc.js    //css相关工具
│  ├── index.html    //主页
│  ├── package-lock.json    //记录当前状态下实际安装的各个npm package的具体来源和版本号
│  ├── package.json    //项目信息
│  ├── README.md    //项目说明

③项目配置

1、eslint配置

如果在一开始新建项目的时候没有禁用eslint, 开发的时候觉得esline太过麻烦,那我们可以选择禁用eslint

        (一)禁用方法:
                (1),注释掉下面代码

                 (2),重启编辑器,再运行项目,报的警告就消失了

        或者在config/index.js文件里useEslint设置为false即可 

        ()配置方式:

                     当然,你需要用到esline,也可以根据自己的需求进行配置;在文件.eslintrc.js文件中添加rules,这里就不细说,之后有机会再整理出这部分。
                     esline网站: https://cn.eslint.org/docs/user-guide/configuring

 这个文章说的比较清楚icon-default.png?t=N6B9https://blog.csdn.net/weixin_43239880/article/details/130263120

2、router路由文件(简单的示例)

<template>
  <div class="hello">
    <el-container>
      <el-header>
        <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
          <el-menu-item :index="item.value" v-for="(item,index) in menuList" :key="index">{
   {item.name}}</el-menu-item>
        </el-menu>
      </el-header>
      <el-container class="el-bottom">
        <el-main>
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeIndex: '1',
      menuList: [
        {
          name: '首页',
          value: '1'
        },
        {
          name: '地图',
          value: '2'
        }
      ]
    }
  },
  mounted() {
    this.handleSelect('1')
  },
  methods: {
    handleSelect(key) {
      if (key === '1') {
        this.$router.push({ path: '/home' })
      } else if (key === '2') {
        this.$router.push({ path: '/map' })
      }
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.hello {
  width: 100%;
  height: 100%;
  .el-container {
    width: 100%;
    height: 100%;
    .el-header {
      background-color: #b3c0d1;
      color: #333;
      text-align: center;
      line-height: 60px;
      height: 60px;
      padding: 0;
      .el-menu-demo{
        .el-menu-item{
          width: 100px;
        }
        &>.is-active{
          background: #409EFF;
          color: #fff;
        }
      }
    }
    .el-bottom {
      height: calc(100% - 60px);
      .el-main {
        background-color: #e9eef3;
        color: #333;
        text-align: center;
        line-height: 160px;
        padding: 0;
      }
    }
  }
}
</style>
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

// 为了防止在同一个路由上不停的点击
// 获取原型对象上的push函数
const originalPush = Router.prototype.push
// 修改原型对象中的push方法
Router.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err)
}

const routes = [
  {
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld,
    children: [
      {
        path: '/home',
        name: 'Home',
        meta: {
          title: '首页'
        },
        component: () => import('../view/home.vue')
      },
      {
        path: '/map',
        name: 'Map',
        meta: {
          title: '地图'
        },
        component: () => import('../view/map.vue')
      }
    ]
  }
]

const router = new Router({
  routes
})
router.afterEach((to, form) => {
  document.title = to.meta.title
})
export default router
首页( http://localhost:8080/#/home
地图( http://localhost:8080/#/map

3、封装api

        安装

npm install axios

        新建文件夹request.js 和api.js

        request.js 用于做全局请求封装、api.js放要请求的方法,方便管理        

        request.js

import axios from 'axios'
import { Message, MessageBox } from 'element-ui'
import store from '../store'
import { getToken } from '@/utils/auth'

// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // api的base_url
  timeout: 50000 // 请求超时时间
})

// request拦截器
service.interceptors.request.use(config => {
  config.headers['tenantId'] = store.getters.tenantid

  if (store.getters.token) {
    config.headers['X-Token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  }

  if (store.getters.isIdentityAuth) {
    config.headers['Authorization'] = 'Bearer ' + store.getters.oidcAccessToken
  }

  return config
}, error => {
  // Do something with request error
  console.log(error) // for debug
  Promise.reject(error)
})

// respone拦截器
service.interceptors.response.use(
  response => {
  /**
  * code为非200是抛错 可结合自己业务进行修改
  */
    const res = response.data
    if (res.code !== 200) {
      // 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        MessageBox.confirm('登录已超时,可以【取消】继续留在该页面,或者【重新登录】', '超时提醒', {
          confirmButtonText: '重新登录',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          store.dispatch('FedLogOut').then(() => {
            location.reload()// 为了重新实例化vue-router对象 避免bug
          })
        })
      } else {
        Message({
          message: res.message || res.msg,
          type: 'error',
          duration: 5 * 1000
        })
      }
      return Promise.reject('error')
    } else {
      return response.data
    }
  },
  error => {
    if(error.response && error.response.status == 400){  //调用远程服务时,前端类型和后端不匹配
     
      var message = '<strong>'+error.response.data.detail +'</strong><br>'
      //异常信息需要特殊处理一下
      var errors = Object.entries(error.response.data.errors).map(([key, value]) => ({key,value}));
      errors.forEach(item=>{
        message +=item.key +":"

        item.value.forEach(dtl =>{
          message +=" " +dtl;
        })

        message +="<br>";
      })
      Message({
        dangerouslyUseHTMLString: true,
        message: message,
        type: 'error',
        duration: 10 * 1000
      })
    }else{
      Message({
        message: '请先启动OpenAuth.WebApi,再刷新本页面,异常详情:' + error.message,
        type: 'error',
        duration: 10 * 1000
      })
    }
    return Promise.reject(error)
  }
)

export default service

        api.js

import request from '@/utils/request'

export function getInfoList(params) {
  return request({
    url: '/portal/module/info/page/',
    method: 'get',
    params
  })
}

在vue页面中使用时

import * as API from '@/api'

API.getInfoList(params).then(res => {
 const { code, data, msg } = res
 if (String(code) === '200') {
   if (data) {
    this.infoList = data.list
    this.pager.total = data.total
   }
 } else {
   this.$message.error(msg)
 }
})

4、config/index.js配置 (详见vue cli官网)

①、dev:开发服务器的配置选项

module.exports = {
  dev: {
    // 本机地址 为了防止别人访问不到,设置为0.0.0.0
    host: '0.0.0.0',
    // 开发服务器监听的端口号,我们将其设置为8080,表示开发服务器将在8080端口监听HTTP请求
    port: 8080,
    // 是否自动打开浏览器,我们将其设置为true,表示在启动开发服务器后,会自动打开浏览器并跳转到项目的首页。
    autoOpenBrowser: true,
    // 静态资源的路径,表示所有静态资源都在/static目录下。
    assetsSubDirectory: 'static',
    // 静态资源的公共路径,表示所有静态资源的URL前缀都为/。
    assetsPublicPath: '/',
    // 代理配置表,用于解决跨域问题,我们在这里配置了一个代理,将所有以/api开头的API请求转发到http://localhost:3000服务器上,并将URL中的/api替换为空字符串。
    proxyTable: {
      '/api': {
        target: 'http://localhost:3000', // 指定被代理的后端服务地址;
        changeOrigin: true, // 指定是否改变源;
        pathRewrite: { // 指定路径重写规则。
          '^/api': ''
        }
      }
    },
    // CSS Sourcemaps的开关,将其设置为true,表示生成CSS Sourcemaps,方便我们调试CSS样式。
    cssSourceMap: true,
    // 是否开启ESLint检查,将其设置为true,表示开启ESLint检查。
    useEslint: true,
    // ESlint检查的文件类型,我们设置了['js', 'vue'],表示同时检查JavaScript和Vue.js代码中的语法错误。
    eslintExtensions: ['js', 'vue'],
    // 指定开发环境中的源映射类型,用于调试;
    devtool: 'cheap-module-eval-source-map'
  }
}

在这个示例代码中,我们将开发服务器的端口设置为8000,并配置了一个代理表,用于将/api/*路径下的API请求转发至后端服务的http://localhost:3000地址 

②、build:构建项目为生产环境的配置选项

module.exports = {
  build: {
    // 指定输入文件的路径,默认为../dist/index.html;
    index: path.resolve(__dirname, '../dist/index.html'),
    // 生产环境下的静态资源路径,我们将其设置为path.resolve(__dirname, '../dist'),表示所有静态资源在dist目录下。
    assetsRoot: path.resolve(__dirname, '../dist'),
    // 静态资源的子路径,表示所有静态资源都在/static目录下。
    assetsSubDirectory: 'static',
    // 静态资源的公共路径,表示所有静态资源的URL前缀都为/。
    assetsPublicPath: '/',
    // 是否开启sourceMap,将其设置为true,表示生成sourceMap以方便调试代码。
    productionSourceMap: true,
    // https://webpack.js.org/configuration/devtool/#production 指定开发环境中的源映射类型,用于调试;
    devtool: '#source-map',
    // 是否开启gzip压缩,将其设置为false,表示禁用gzip压缩。
    productionGzip: false,
    // 压缩文件的类型,开启gzip压缩时需要用到,我们设置为['js', 'css'],表示只压缩JavaScript和CSS文件。
    productionGzipExtensions: ['js', 'css'],
    // 是否检查编译错误,我们将其设置为process.env.npm_config_report || false,表示只有在命令行中传入了--report参数才会检查编译错误。
    bundleAnalyzerReport: process.env.npm_config_report || false,
    // webpack的优化配置,我们在这里配置了以下插件(可不写)
    webpackOptions: {
      plugins: [
        // 用于生成HTML文件,我们将入口文件设为index.html,并设置了一些HTML文件的压缩选项。
        new HtmlWebpackPlugin({
          filename: 'index.html',
          template: 'index.html',
          inject: true,
          minify: {
            removeComments: true,
            collapseWhitespace: true,
            removeAttributeQuotes: true
          },
          chunksSortMode: 'dependency'
        }),
        // 用于提取公共模块,我们在这里提取了第三方库和webpack manifest信息,并将它们分别打包到vendor和manifest文件中。
        new webpack.optimize.CommonsChunkPlugin({
          name: 'vendor',
          minChunks: function (module) {
            // 任何第三方库都要打包到vendor里面
            return (
              module.resource &&
              /\.js$/.test(module.resource) &&
              module.resource.indexOf(
                path.join(__dirname, '../node_modules')
              ) === 0
            )
          }
        }),
        // 提取webpack manifest信息
        new webpack.optimize.CommonsChunkPlugin({
          name: 'manifest',
          chunks: ['vendor']
        }),
        // 用于压缩JS文件,我们在这里设置了一些压缩选项。
        new webpack.optimize.UglifyJsPlugin({
          compress: {
            warnings: false
          },
          sourceMap: true
        }),
        // 用于压缩CSS文件,我们在这里设置了一些压缩选项。
        new OptimizeCSSPlugin({
          cssProcessorOptions: {
            safe: true
          }
        })
      ]
    }
  }
}

 在这个示例代码中,我们指定了项目构建时的各种配置选项,包括输出路径、公共路径、源映射、gzip压缩、构建报告等。

③、proxyTable:代理配置选项

module.exports = {
  dev: {
    proxyTable: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/'
        }
      }
    }
  }
}

在这个示例代码中,我们配置了一个代理表,用于将/api/*路径下的API请求转发至后端服务的http://localhost:3000地址。 

④、 css:配置Vue.js项目中的CSS loader(可不写)

module.exports = {
  // ...
  css: {
    // 是否允许在 CSS 中使用 module,默认是 true。
    requireModuleExtension: true,
    // 是否生成 CSS source map,可以设置为 true 或 false。
    sourceMap: process.env.NODE_ENV === "development",
    // 自定义 CSS loader 配置,这里可以针对不同类型的 CSS 文件进行不同的配置。
    loaderOptions: {
      css: {
        // options for css-loader
        importLoaders: 1
      },
      postcss: {
        // options for postcss-loader
        plugins: [
          require("autoprefixer")({
            // 自动添加浏览器前缀
            overrideBrowserslist: ["last 2 versions", "ie >= 9"]
          })
        ]
      },
      sass: {
        // options for sass-loader
      },
      scss: {
        // options for scss-loader
      },
      less: {
        // options for less-loader
      },
      stylus: {
        // options for stylus-loader
      }
    }
  },
  // ...
}
// 在这个示例中,我们设置了允许在 CSS 中使用 module(局部作用域样式),在开发模式下生成 CSS source map,同时还使用了 PostCSS 插件 autoprefixer 来自动添加浏览器前缀。此外,loaderOptions 选项中对不同类型的 CSS loader 进行了不同的配置,包括 css-loader、postcss-loader、sass-loader、scss-loader、less-loader 和 stylus-loader。我们可以根据实际需求进行选项配置。

在这个示例代码中,我们为Vue.js项目中的CSS loader配置了一些选项,包括是否生成源映射、提取CSS至单独文件、特定的CSS loader选项等配置Webpack构建工具的高级选项。 

 ⑤、Webpack:配置Webpack构建工具的高级选项。(可不写)

module.exports = {
  webpack: {
    // 指定Webpack的入口文件路径
    entry: {
      app: './src/main.js'
    },
    // 指定Webpack的输出路径和文件名;
    output: {
      path: path.resolve(__dirname, '../dist'),
      filename: '[name].[chunkhash].js'
    },
    // 指定Webpack模块的解析规则;
    resolve: {
      extensions: ['.js', '.vue', '.json'],
      alias: {
        '@': path.resolve(__dirname, '../src')
      }
    },
    // 指定Webpack配置的loader和插件;
    module: {
      rules: [
        {
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          enforce: 'pre',
          include: [path.resolve(__dirname, '../src')],
          options: {
            formatter: require('eslint-friendly-formatter')
          }
        },
        {
          test: /\.vue$/,
          loader: 'vue-loader',
          options: {
            loaders: {
              css: ExtractTextPlugin.extract({
                use: 'css-loader',
                fallback: 'vue-style-loader'
              }),
              less: ExtractTextPlugin.extract({
                use: ['css-loader', 'less-loader'],
                fallback: 'vue-style-loader'
              })
            }
          }
        },
        {
          test: /\.js$/,
          loader: 'babel-loader',
          include: [path.resolve(__dirname, '../src')]
        }
      ]
    },
    // 指定Webpack的插件列表。
    plugins: [
      new HtmlWebpackPlugin({
        filename: 'index.html',
        template: 'index.html',
        inject: true
      }),
      new ExtractTextPlugin({
        filename: '[name].[contenthash].css'
      })
    ]
  }
}

在这个示例代码中,我们为Webpack构建工具配置了入口文件路径、输出文件路径和名称、模块解析规则、loader和插件等。其中包括了一些常见的loader和插件,例如Vue.js项目中的vue-loader和ExtractTextPlugin插件,帮助开发人员更好地管理项目的构建过程。 

④常用插件

本章节记录一些vue常用插件,如 axios、 echarts、 sass/scss、 lib-flexible等等。所有命令均可用 cnpm替代。如不需要可直接跳过。

1、sacc/scss

 用途:可用 sass/scss进行css书写代码。命令行工具依次键入如下命令:

npm install node-sass --save-dev
npm install sass-loader --save-dev

 2、axios

用途:平时前后端交互使用 Ajax,在vue官方,给出 vue-resource和 axios的作为 ajax的替代。在此处使用vue官方推荐首选的 axios作为案例讲述。

npm install axios

全局引入 在 项目/src/main.js中引入如下代码

import axios from 'axios'

Vue.prototype.$axios = axios;

3、echarts可视化

  • 安装依赖 惯例,先装依赖。命令行工具执行 npm install echarts--save-dev
  • 全局配置 安装完成后,全局引入。引入方法:进入 项目/src/main.js,如下操作:
import echarts from 'echarts'

Vue.prototype.$echarts = echarts
  • 使用 在 ***.vue组件中即可正常使用。我在此处用 Hello.vue写示例:
//template
<div id="demo"></div>

//script
let myChart = this.$echarts.init(document.getElementById('demo')); //初始化
//myChart.clear();    //根据需求配置
myChart.setOption({ // 图表配置
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [{
    data: [820, 932, 901, 934, 1290, 1330, 1320],
    type: 'line',
    smooth: true
  }]
});

//style
#demo{
  width: 500px;
  height: 500px;
}

4、Element ui

npm i element-ui -S

在main.js中引用

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI, { size: 'small', zIndex: 3000 });

5、打包项目

npm run build

二、Vue-cli3.0

第一步:删除以前安装的vue-cli2.0

npm uninstall vue-cli

第二步:全局安装vue-cli3.0 

npm install @vue/cli -g

第三步:创建项目 

vue create myProject(项目名称)

// 安装过程

Please pick a preset: Manually select features  // 模板选择(一般选择自定义模板)
  Default ([Vue 3] babel, eslint) //  vue2
  Default ([Vue 2] babel, eslint) //  vue3默认模板
  Manually select features  //  Manually select features 手动选择(自定义)

Check the features needed for your project: // 选择我们需要的默认配置(通过空格键来选中)
 (*) Babel
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 (*) Router
 (*) Vuex
 (*) CSS Pre-processors
 (*) Linter / Formatter
 ( ) Unit Testing
 ( ) E2E Testing

Choose a version of Vue.js that you want to start the project with  // vue版本选择  
  3.x
> 2.x

Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) n   // 选择是否使用历史模式

Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): (Use arrow keys)  // css预处理器
> Sass/SCSS (with dart-sass)
  Less
  Stylus


Pick a linter / formatter config: (Use arrow keys) // 代码检测方式
> ESLint with error prevention only // 只进行报错提醒
  ESLint + Airbnb config // 不严谨模式
  ESLint + Standard config // 正常模式
  ESLint + Prettier // 严格模式 使用较多

Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> toproceed)   // 选择什么时候对代码进行校验   默认选择
>(*) Lint on save
 ( ) Lint and fix on commit (requires Git)

Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys) // 对于刚才选择的配置,是选择生成独立的配置文件,还是保存到 pack.json中,这里选择独立的文件
> In dedicated config files
  In package.json

Save this as a preset for future projects? (y/N) n    //  最后一步是 是否将本次配置保存成一个预设,选择不保存,输入N,敲一下回车,就开始创建项目了

第四步:重启之后,安装依赖,路由,api封装与2的步骤一样

第五步:封装vue.config.js文件(目前还未整理出来,详见vue cli官网)

第六步:创建三个env文件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ssy001128/article/details/128846018

智能推荐

874计算机科学基础综合,2018年四川大学874计算机科学专业基础综合之计算机操作系统考研仿真模拟五套题...-程序员宅基地

文章浏览阅读1.1k次。一、选择题1. 串行接口是指( )。A. 接口与系统总线之间串行传送,接口与I/0设备之间串行传送B. 接口与系统总线之间串行传送,接口与1/0设备之间并行传送C. 接口与系统总线之间并行传送,接口与I/0设备之间串行传送D. 接口与系统总线之间并行传送,接口与I/0设备之间并行传送【答案】C2. 最容易造成很多小碎片的可变分区分配算法是( )。A. 首次适应算法B. 最佳适应算法..._874 计算机科学专业基础综合题型

XShell连接失败:Could not connect to '192.168.191.128' (port 22): Connection failed._could not connect to '192.168.17.128' (port 22): c-程序员宅基地

文章浏览阅读9.7k次,点赞5次,收藏15次。连接xshell失败,报错如下图,怎么解决呢。1、通过ps -e|grep ssh命令判断是否安装ssh服务2、如果只有客户端安装了,服务器没有安装,则需要安装ssh服务器,命令:apt-get install openssh-server3、安装成功之后,启动ssh服务,命令:/etc/init.d/ssh start4、通过ps -e|grep ssh命令再次判断是否正确启动..._could not connect to '192.168.17.128' (port 22): connection failed.

杰理之KeyPage【篇】_杰理 空白芯片 烧入key文件-程序员宅基地

文章浏览阅读209次。00000000_杰理 空白芯片 烧入key文件

一文读懂ChatGPT,满足你对chatGPT的好奇心_引发对chatgpt兴趣的表述-程序员宅基地

文章浏览阅读475次。2023年初,“ChatGPT”一词在社交媒体上引起了热议,人们纷纷探讨它的本质和对社会的影响。就连央视新闻也对此进行了报道。作为新传专业的前沿人士,我们当然不能忽视这一热点。本文将全面解析ChatGPT,打开“技术黑箱”,探讨它对新闻与传播领域的影响。_引发对chatgpt兴趣的表述

中文字符频率统计python_用Python数据分析方法进行汉字声调频率统计分析-程序员宅基地

文章浏览阅读259次。用Python数据分析方法进行汉字声调频率统计分析木合塔尔·沙地克;布合力齐姑丽·瓦斯力【期刊名称】《电脑知识与技术》【年(卷),期】2017(013)035【摘要】该文首先用Python程序,自动获取基本汉字字符集中的所有汉字,然后用汉字拼音转换工具pypinyin把所有汉字转换成拼音,最后根据所有汉字的拼音声调,统计并可视化拼音声调的占比.【总页数】2页(13-14)【关键词】数据分析;数据可..._汉字声调频率统计

linux输出信息调试信息重定向-程序员宅基地

文章浏览阅读64次。最近在做一个android系统移植的项目,所使用的开发板com1是调试串口,就是说会有uboot和kernel的调试信息打印在com1上(ttySAC0)。因为后期要使用ttySAC0作为上层应用通信串口,所以要把所有的调试信息都给去掉。参考网上的几篇文章,自己做了如下修改,终于把调试信息重定向到ttySAC1上了,在这做下记录。参考文章有:http://blog.csdn.net/longt..._嵌入式rootfs 输出重定向到/dev/console

随便推点

uniapp 引入iconfont图标库彩色symbol教程_uniapp symbol图标-程序员宅基地

文章浏览阅读1.2k次,点赞4次,收藏12次。1,先去iconfont登录,然后选择图标加入购物车 2,点击又上角车车添加进入项目我的项目中就会出现选择的图标 3,点击下载至本地,然后解压文件夹,然后切换到uniapp打开终端运行注:要保证自己电脑有安装node(没有安装node可以去官网下载Node.js 中文网)npm i -g iconfont-tools(mac用户失败的话在前面加个sudo,password就是自己的开机密码吧)4,终端切换到上面解压的文件夹里面,运行iconfont-tools 这些可以默认也可以自己命名(我是自己命名的_uniapp symbol图标

C、C++ 对于char*和char[]的理解_c++ char*-程序员宅基地

文章浏览阅读1.2w次,点赞25次,收藏192次。char*和char[]都是指针,指向第一个字符所在的地址,但char*是常量的指针,char[]是指针的常量_c++ char*

Sublime Text2 使用教程-程序员宅基地

文章浏览阅读930次。代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大、灵活的编辑器,相信你和我一样,都不会例外。我用过的编辑器不少,真不少~ 但却没有哪款让我特别心仪的,直到我遇到了 Sublime Text 2 !如果说“神器”是我能给予一款软件最高的评价,那么我很乐意为它封上这么一个称号。它小巧绿色且速度非

对10个整数进行按照从小到大的顺序排序用选择法和冒泡排序_对十个数进行大小排序java-程序员宅基地

文章浏览阅读4.1k次。一、选择法这是每一个数出来跟后面所有的进行比较。2.冒泡排序法,是两个相邻的进行对比。_对十个数进行大小排序java

物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)_网络调试助手连接阿里云连不上-程序员宅基地

文章浏览阅读2.9k次。物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)其实作者本意是使用4G模块来实现与阿里云物联网平台的连接过程,但是由于自己用的4G模块自身的限制,使得阿里云连接总是无法建立,已经联系客服返厂检修了,于是我在此使用网络调试助手来演示如何与阿里云物联网平台建立连接。一.准备工作1.MQTT协议说明文档(3.1.1版本)2.网络调试助手(可使用域名与服务器建立连接)PS:与阿里云建立连解释,最好使用域名来完成连接过程,而不是使用IP号。这里我跟阿里云的售后工程师咨询过,表示对应_网络调试助手连接阿里云连不上

<<<零基础C++速成>>>_无c语言基础c++期末速成-程序员宅基地

文章浏览阅读544次,点赞5次,收藏6次。运算符与表达式任何高级程序设计语言中,表达式都是最基本的组成部分,可以说C++中的大部分语句都是由表达式构成的。_无c语言基础c++期末速成