既然选择了远方,便只顾风雨兼程 __ HANS许

零基础搭建前后端分离项目

 

 

上篇文章我们讲了VsCode的使用以及Node与Npm的使用,并简单的创建了一个Express的简单前端框架项目。那这篇文章我们进阶的使用Less与TypeScript写一个静态的H5页面,并使用WebPack打包成静态页面。

该篇文章讲述的是LessTypeScriptWebPack的基本使用,并没与涉及到大型项目,讲讲安装,讲讲用法,讲讲配置,毕竟你要知道是一句英语的翻译是什么,才懂得翻译过来得中文是什么意思吧。那最后面我们使用一个VsCode+Less+TypeScripts+WebPack+Vue做的两个页面,一个简单的"知乎日报"小应用作为结束,也作为下篇文章的开篇。下面用到的代码都在GitHub上面。


https://webpack.css88.com

        const path = require('path');  //引入node的path模块

        const webpack = require('webpack'); //引入的webpack,使用lodash

        const HtmlWebpackPlugin = require('html-webpack-plugin')  //将html打包

        const ExtractTextPlugin = require('extract-text-webpack-plugin')     //打包的css拆分,将一部分抽离出来  

        const CopyWebpackPlugin = require('copy-webpack-plugin')

        // console.log(path.resolve(__dirname,'dist')); //物理地址拼接

        module.exports = {

            entry: './src/index.js', //入口文件  在vue-cli main.js

            output: {       //webpack如何输出

                path: path.resolve(__dirname, 'dist'), //定位,输出文件的目标路径

                filename: '[name].js'

            },

            module: {       //模块的相关配置

                rules: [     //根据文件的后缀提供一个loader,解析规则

                    {

                        test: /.js$/,  //es6 => es5 

                        include: [

                            path.resolve(__dirname, 'src')

                        ],

                        // exclude:[], 不匹配选项(优先级高于test和include)

                        use: 'babel-loader'

                    },

                    {

                        test: /.less$/,

                        use: ExtractTextPlugin.extract({

                            fallback: 'style-loader',

                            use: [

                            'css-loader',

                            'less-loader'

                            ]

                        })

                    },

                    {       //图片loader

                        test: /.(png|jpg|gif)$/,

                        use: [

                            {

                                loader: 'file-loader' //根据文件地址加载文件

                            }

                        ]

                    }

                ]                  

            },

            resolve: { //解析模块的可选项  

                // modules: [ ]//模块的查找目录 配置其他的css等文件

                extensions: [".js", ".json", ".jsx",".less", ".css"],  //用到文件的扩展名

                alias: { //模快别名列表

                    utils: path.resolve(__dirname,'src/utils')

                }

            },

            plugins: [  //插进的引用, 压缩,分离美化

                new ExtractTextPlugin('[name].css'),  //[name] 默认  也可以自定义name  声明使用

                new HtmlWebpackPlugin({  //将模板的头部和尾部添加css和js模板,dist 目录发布到服务器上,项目包。可以直接上线

                    file: 'index.html', //打造单页面运用 最后运行的不是这个

                    template: 'src/index.html'  //vue-cli放在跟目录下

                }),

                new CopyWebpackPlugin([  //src下其他的文件直接复制到dist目录下

                    { from:'src/assets/favicon.ico',to: 'favicon.ico' }

                ]),

                new webpack.ProvidePlugin({  //引用框架 jquery  lodash工具库是很多组件会复用的,省去了import

                    '_': 'lodash'  //引用webpack

                })

            ],

            devServer: {  //服务于webpack-dev-server  内部封装了一个express 

                port: '8080',

                before(app) {

                    app.get('/api/test.json', (req, res) => {

                        res.json({

                            code: 200,

                            message: 'Hello World'

                        })

                    })

                }

            }



        }

WebPack还有很多需要理解的,比如“模块热替换”,"懒加载"等等,后面有机会再讲。

  1. 知乎日报API

    我使用了两个api,一个是获取最新消息,也就是今天的消息,另一个当然是详情啦,根据这两个api,我采用了“Vue”框架(这样就不用自己搭了-_-)来实现,当然技术还是文章标题那些,来构建一个“知乎日报每天版

  2. 每天日报页面
    日报列表

  3. 日报详情页面
    日报详情

  • 实现
  1. 创建项目

    1. 首先上面的Less,TypeScript,WebPack都要先安装好。

    2. 接着我们安装vue,官方提供了一个“vue cli”,可以根绝这个来快速创建一个Vue的项目,那我们采用的是3.0的版本,3.0才有“TS”的项目,那使用命令npm install -g @vue/cli,照旧vue -V就可以看到版本号了,若是2.0的,可以先卸载2.0,再重新安装3.0.
      enter description here

    3. 使用命令vue create projectname来创建项目

      1. 第一个选项是默认,第二个是配置化,我们选择第二个
        enter description here

      2. 然后按照我们想要的,选择安装,按“空格键”选中
        enter description here

      3. 后面就按“Enter”一直确认了,到了选择样式是,我们选择“Less”,后面就一路默认了。
        enter description here

       

      enter description here
      enter description here

       

      1. 创建好的项目
        enter description here

      2. 运行项目
        使用命令npm run serve,运行项目,http://localhost:8080 就可以看到效果了。
        enter description here

  2. 改造项目

    1. App.Vue
      那由于我们不需要Home,About的切换了,就注释掉,直接使用" "来显示我们写好的View
      enter description here

    2. 添加界面和路由

      • 我们添加如下的两个View
        可以看到我们css采用的less语法来写的,script采用的ts语法来写的。
        enter description here

       

      enter description here
      enter description here

       

       

      enter description here
      enter description here

       

      • 接下来设置路由
        enter description here
    3. 然后就可以按照上面的来运行项目,进入http://localhost:8080/#/zhihu 就可以看到效果了

    4. 使用命令npm run build,他会直接帮你打包好。然后你在服务器上就可以运行了,无需依赖NodeJs了。

     

    enter description here
    enter description here

     

  3. 发现问题
    我们发现上面讲的webpack.config.js,在该项目并没有,那时因为Vue Cli3.0集成了在模块里面,并采用默认的配置来构建项目,编译项目,打包项目,这样我们无需搭理了。若是我们有特殊要求了,Vue将配置全部集中来根目录vue.config.js中,我们可在根目录创建该文件,进行配置、具体我们下篇再讲。

那我也做个Express版的,源码都在GitHub,可以上去下载来看看。

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程