精华内容
下载资源
问答
  • 今天分享一下对于那些不经常接触前端代码,主要业务放在Java、PHP、Android开发上的人员,自己又想开发一个网站或者系统的时候...下面通过谷歌浏览器获取(偷取)已经写好前端页面的代码,找到自己想要的页面下过...

    今天分享一下对于那些不经常接触前端代码,主要业务放在Java、PHP、Android开发上的人员,自己又想开发一个网站或者系统的时候,怎么快速搭建出属于自己前端页面。其实就是借用别人写好的前端代码,直接拿过来修改,这样就节省了写前端代码的时间,让我们有更多的时间去专注后端服务器的开发,利用web浏览器可以轻易做到这一点。

    下面通过谷歌浏览器获取(偷取)已经写好的前端页面的代码,找到自己想要的页面下过按 F12 查看源代码复制下来


    选择中<head> 和<body>标签 Ctrl + C 复制下来,然后将复制的内容粘贴到一个新建的html文件。

    新建一个web项目的文件夹存放css、js、mage文件

    打开浏览器,选择Sources,点开所有文件夹,右键点击文件,选择 “save as” 将需要的文件全部保存到自己的web目录下


    到此整个页面就被我们保存下来了,如果需要修改可以在本地的目录下修改,这样我们就可以专注精力去搞后端业务l开发了。


    展开全文
  • 我使用了springboot框架,想写一个表格实现增删功能,后端写好了,也写了一个静态页面,但是前后端怎么连起来呀,有没有推荐的学习资源,详细点的,视频资料等等。新手求解啊。
  • 在上篇文章我们已经搭建了基础的开发环境,接下来会介绍如何引入 DVA 和 ANTD ,以及在引入过程中需要注意的问题。这里只会详细的书写部分组件,其他的组件都是大同小异。你可以在 github仓库 中找到这些组件。 ...
        

    在上篇文章我们已经搭建好了基础的开发环境,接下来会介绍如何引入 DVA 和 ANTD ,以及在引入过程中需要注意的问题。这里只会详细的书写部分组件,其他的组件都是大同小异。你可以在 github仓库 中找到这些组件。

    博客的原型图

    这里我简单的画了一个博客的轮廓图。这样在写组件的过程中有助于有个整体性的思路,不迷路…

    layout

    添加目录结构

    blog 
    ├─ dist           # 输出目录
    ├─ task           # 这里来放webpack处理和配置文件
    ├─ src
    |  ├─ assets      # 静态文件文件夹
    |  ├─ components  # 组件
    |  |  ├─ Home     # Home 页面的文件夹
    |  |  ├─ Archive 
    |  |  ├─ About
    |  |  ├─ Admin    # 后台界面文件夹
    |  |  ├─ Header.js    # 公共的 Header 组件
    |  |  ├─ Footer.js    # 公共的 Footer 组件
    |  |  ├─ UserCard.js  # 公共的 UserCard 组件
    |  |  ├─ Login.js     # 公共的 Login 组件
    |  ├─ containers  # Redux 的容器组件
    |  |  ├─ Home.js      # Home 组件的容器
    |  |  ├─ Archive.js
    |  |  ├─ About.js
    |  |  ├─ Admin        # 后台各界面的容器文件夹
    |  ├─ router.js   # React 路由
    |  └ index.js     # 入口文件
    | package.json

    引入 DVA 和 ANTD

    DVA 的简单引入

    Lightweight front-end framework based on redux, redux-saga and react-router@2.x. (Inspired by elm and choo)

    要知道 dva 是对 redux , redux-saga , react-router 的封装,使用上有点像 express.js ,那么你就要多少对他们有所了解,dvagithub 仓库 有详细的入门指南、概念和示例,可以先去了解一下 。

    更改入口文件 src/index.js

    import dva from 'dva'
    const app = dva()
    
    app.router(require('./router'))
    app.start('#root')

    新建路由文件 src/router.js

    import React from 'react'
    import { Router, Route, IndexRoute, IndexRedirect } from 'dva/router'
    
    import AppLayout from './container/App'
    import Home from './container/Home'
    import Archive from './container/Archive'
    import About from './container/About'
    import Article from './container/Article'
    import AdminArticles from './container/Admin/Articles'
    import AdminKeywrods from './container/Admin/Keywords'
    import AdminEditor from './container/Admin/Editor'
    import AdminLayout from './container/Admin/Admin'
    
    export default ({history, app}) => {
        return (
            <Router history={history}>
                <Route path="/" component={AppLayout}>
                    <IndexRoute component={Home} />
                    <Route path="archive" component={Archive} />
                    <Route path="about" component={About} />
                    <Route path="article/:id" component={Article} />
                    <Route path="admin" component={AdminLayout}>
                        <IndexRedirect to="articles" />
                        <Route path="articles" component={AdminArticles} />
                        <Route path="keywords" component={AdminKeywrods} />
                        <Route path="editor" component={AdminEditor} />
                    </Route>
                </Route>
            </Router>
        )
    }

    从这里可以看出, dva 自己在内部引入 react-router-redux ,然后使用 react-router-redux 提供的 combineReducers routerRedux 合并到用户的 reducers

    限于文章的篇幅,dvamodel 的设计会放到下一次的文章来描述

    引入 ANTD

    按需加载

    在引入 ANTD 之前,我们先来实现 按需加载 。其实概念很简单,就是我们在引入一个样式库的时候,往往只会用到这个样式库的部分组件,但是工具会把整个组件库都打包到我们的项目中,这是我们不想看到的。按需加载 就是用来打包我们引入的组件,可以使用 babel-plugin-import 来具体实现。

    task/config.jsbabel-loader 的 plugins 配置中添加:
    ["import", { "libraryName": "antd", "style": true }]

    自定义主题

    由脚手架 atool-build官网介绍,我们已经自己配置并新建好了主题文件 theme.js

    添加 less-loader 处理样式文件

    上节我们只是添加了对 .module.less 文件进行编译,在自定义主题时,需要对 less 变量进行覆盖,所以要求 babel-plugin-importstyle 选项设置为 true ,让它导出 antd 组件的 .less 样式文件才能进行变量覆盖操作。

    task/config.jsmodule.rules 追加

    {
        test: function(path){
            return /\.less$/.test(path) && !/\.module\.less$/.test(path)
        },
        loader: ExtractTextPlugin.extract({
            fallback: 'style-loader', 
            use: [
                {
                    loader: 'css-loader', 
                },
                {
                    loader: 'postcss-loader',
                    options: {
                        plugins: postcssPlugins
                    }
                },
                {
                    loader: 'less-loader', 
                    options: {"modifyVars": theme}
                }
            ]
        })
    },

    注意 /\.less/ 至少会匹配到 .module.less.less 文件,所以要排除 .module.less ,因为它需要被 css-module 处理。

    你也可能会通过添加 exclude , include 来对样式库中的 less 文件和自己编写的文件进行区别,毕竟样式库肯定都是从 node_modules 目录中加载,而自己的是从 src 目录下加载的。也正因为样式库是从 node_modules 目录下加载的,所以这样做可能会导致降低 webpack 的编译速度。

    添加容器组件和展示组件

    容器组件

    /src/containers 下新建 App.js

    import React, { PropTypes } from 'react'
    import { connect } from 'dva'
    import { Layout, Menu, Breadcrumb, Row, Col, Icon } from 'antd'
    import HeaderComponent from 'components/Header'
    import FooterComponent from 'components/Footer'
    import LoginModel from 'components/Login'
    const { Header, Content, Footer } = Layout
    
    const App = ({children, routes}) => {
        return (
            <Layout>
                <Header>
                    <HeaderComponent routes={routes}>
                        <LoginModel doLogin={() => {}} />
                    </HeaderComponent>
                </Header>
                <Content style={{ margin: '24px 100px 0', background: '#fff', minHeight: 280, overflow: 'hidden' }}>
                    {children}
                </Content>
                <Footer>
                    <FooterComponent />
                </Footer>
            </Layout>
        )
    }
    
    export default connect()(App)

    因为 dva 封装了 redux源文件 中也是直接导出 react-reduxconnect 方法。所以在创建容器组件的时候还是等同于 react-redux

    注意,这个 App组件是作为子路由组件的父组件,即 children 代表的就是那些子组件 Home , Archive

    其他的展示组件,即 /src/containers 文件夹下面的组件,都是大同小异,就不一一赘述。

    展示组件

    我们看到 src/container/App.js 展示组件,引入了一个 HeaderComponent ,在 src/components 下面新建一个 Header.js

    import React from 'react'
    import { Layout, Menu, Breadcrumb, Row, Col } from 'antd'
    import { Router, Link } from 'dva/router'
    
    const HeaderComponent = (props) => {
        const { children, routes } = props
        const routePath = (routes[routes.length - 1] || {}).path || '/'
        return (
            <div>
                <Row>
                    <Col span={16}>
                        <Menu
                            mode="horizontal"
                            defaultSelectedKeys={[routePath]}
                            style={{ lineHeight: '64px', backgroundColor: 'transparent' }}
                        >
                            <Menu.Item key="/"><Link to="/">Home</Link></Menu.Item>
                            <Menu.Item key="archive"><Link to="archive">Archive</Link></Menu.Item>
                            <Menu.Item key="about"><Link to="about">About me</Link></Menu.Item>
                        </Menu>
                    </Col>
                    <Col span={8}>
                        <div style={{ lineHeight: '64px', float: 'right', padding: '0 20px' }}>
                            {children}
                        </div>
                    </Col>
                </Row>
            </div>
        )
    }
    
    export default HeaderComponent

    这就是个普通的 React 的展示组件没什么好说的,这些组件可以直接在 Antd 的官网上找到用法,而且都有示例代码。

    const routePath = (routes[routes.length - 1] || {}).path || '/'
    找到路由路径中的最后一个名称,如 /home 中的 home ,作为 Menu 的默认选中项,这样在当前页面刷新,就可以让当前页面对应的导航高亮。

    其他的展示型组件也都是大同小异,你可以在 github仓库 中找到它们的实现。

    引入 url-loader 来处理文件路径

    task/config.js 中的 module.rules 追加:

    {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
            limit: 10000,
            name: 'img/[name].[hash:7].[ext]'
        }
    },
    {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
            limit: 10000,
            name: 'fonts/[name].[hash:7].[ext]'
        }
    },

    关于 url-loader 的配置方法,可以在 webpack 的文档中查看

    小结

    这篇文章主要是引入了两个重要的库 dvaantd ,以及编写部分展示组件。接下来,我们会对 dva 的数据层,已经后台初步搭建,同步进行前后端的开发。

    展开全文
  • 1.首先要搞清楚前端后端分别是什么: ...后台主要负责实现具体的功能,举个例子,还是那个注册界面,前端写好了界面,规定了你能输入哪些数据,不能输入哪些数据,而后台则会把你输入的信息与数据库进行比对,如果是

    1.首先要搞清楚前端、后端分别是什么:

    前端是用户看得见摸得着的东西,主要体现在页面的视觉效果以及交互设计上。

    比如说一个网站的页面风格、页面跳转等,最简单的例子就是一个注册界面:前端设计界面风格,约束输入的字符类型、长度以及合法性校验等,不涉及到与数据库之间的信息交流。

    后台,则侧重于更深层面的东西,关于逻辑,关于数据,关于平台的稳定性与性能。

    后台主要负责实现具体的功能,举个例子,还是那个注册界面,前端写好了界面,规定了你能输入哪些数据,不能输入哪些数据,而后台则会把你输入的信息与数据库进行比对,如果是新用户,则顺势在数据库中插入一条信息。

    当然,关于数据的校验,不同项目情况不同,有些是由前端进行校验,有些是后台,有些是前后台都需要校验。

    通常前端与界面相关、布局相关、兼容性相关、交互相关,后端与业务逻辑相关、性能相关、数据相关、安全性相关

    知道了前后台的区别,就大致能够进行bug的判断了。

    我们可以从接口url是否正确,传参是否正确,如果是接口URL,传参不正确,解释前端问题;反之,后端问题。
    响应是否正确,如果不正确,就是后台不正确,具体判断是不是后端的问题。我们可以查看报错日志,通过日志分析问题,可以查看数据库确认数据的正确性,也可以查看缓存是否正确

    展开全文
  • 唉~ 最近不知道说什么了,我一个后端技术,现在不得不写前端了,虽然咱们多少了解一些,可毕竟不是专业的啊。这不,最近老大看首页侧边栏收缩后,正文不放呢无变化 侧边空了一大块,现在提了一个自适应的效果需求...

    通过脚本控制相关样式效果

    前言

    唉~ 最近不知道说什么好了,我一个后端技术,现在不得不写前端了,虽然咱们多少了解一些,可毕竟不是专业的啊。这不,最近老大看首页侧边栏收缩后,正文不放呢无变化 侧边空了一大块,现在提了一个自适应的效果需求。老大发话了 咋办呢,查资料实现吧,唉~小小的劳碌命啊

    实现原理

    主要是根据浏览器变化,获取对应的浏览器宽度之后在从新计算赋值,内容宽度,好在有提供对应的监听事件 (resize() 方法) 处理起来相对容易一些

    效果实现

    
        //宽度改变事件  处理
        $(function () {
            //监听浏览器宽度是否变化
            $(window).resize(function () {
                //显示器总宽度
                var allwidth = $(window).width();
                //动态调整内容宽度
                var newwidth = allwidth - 500-40;
                //根据id 改变对应的宽度信息  注意要增加单位
                document.getElementById("changeID").style.width = newwidth + "px"; 
                //动态调整样式内间距   15     21  
                $(".common li").css("padding", "21px"); 
                /* 下面列举一些常用的方法  我找了有一会儿(手动笑哭)
                1、.css("样式"):获得样式值,比如$("input").css("color")  获得input中字体的颜色
    			2、.css("样式","value"):为样式赋值,如$("input").css("color","red");
    			3、.addClass("样式类1,样式类2,样式类3"):可以添加多个定义好的样式类
    			4、.hasClass("样式类类"):判断是否存在该样式
    			5、.toggleClass("样式类"):如果存在(不存在)就切换(删除)样式
    			6、.toggleClass("样式类",swith):如果swith为false,则删除样式,如果swith为true,则切换成该类
    			7、removeClass("样式类"):移除样式类
    			8、.css({样式名:"value",样式名:"value",样式名:"value"}):可以多次添加样式
    			*/
                //滚动条内容水平居中的实现效果
                //通过计算总宽度除以2勉强达到居中效果,主要看一下滚动条多长计算
                //下面的效果会有些偏右
                $("#chart").scrollLeft(newwidth /2)
    
            });
        });
    

    以上是代码实现,我这边测试是可以用的,有需要补充的话大家可以评论留言,我定期会做一个更新

    尾语

    当我们遇到不擅长的事情的时候,首先不要慌张,冷静 镇定下来,好好平复一下心情。(由于我个人遇到不正常的需求的时候,或者有临时增加需求的时候 脾气会变的有些暴躁)。
    然后,可以跟同事讨论 确定一个方案出来,毕竟还是要完成的,需求都提出来了 你不做,还会有其他人做 不如当作锻炼自己的一次挑战。这次就是有我帅气的同事,给我了个思路,把效果给完成了。
    希望大家都努力,提高自身的处理能力。工作的本质就是来处理问题的 ,这个是之前在博客上看到的文章,挺不错的。

    展开全文
  • 通过阅读前辈的文章然后自己了一个工具类,用java代码来去掉文章的html标签,然后截取前200字,本来可以用前端来做的,但是前端来操作势必会对页面进行重新的渲染,影响页面的打开速度,所以我建议...
  • vue 使用qs向后端传递表单FormData参数

    千次阅读 2019-12-02 23:54:35
    在使用vue+elementUI搭建了登录页面之后,想和后端的Springboot对接一下;对接的vue-cli配置研究一番再笔记;总所周知,再前后端对接的时候,后端接收的一般就是字符串,直接返回json字符串;而前端内,最好选择...
  • 我的网站:Python爬虫人工智能学习教程​www.python88.cn最近在写一个django的web项目,后端代码基本都已经写好了,主要是前端,以前学过一段前端,只是对一些基本的方法知道,但还有很多东西不熟练,问题是在遇到...
  • Reacr-Router 是React生态里面很重要的一环,现在React的单页应用的路由由基本都是前端自已管理的,而不像以前是后端路由,React管理路由的库常用的就是 React-Router。本文想一下 React-Router的使用,但是光介绍...
  • 不会CSS的后端不是的程序猿JS 对于后端小伙伴来说不算难点,能够...前端页面的书写顺序先看设计稿编写 HTML 代码编写 CSS 代码编写 JS 代码今天我们主要关注编写 CSS 代码,在 CSS 代码时,我们需要从PSD中拿...
  • 前端技巧之如何切图注:本篇文章基于...作为需要涉猎前端后端工程师,在切图中需要掌握如下的知识:如何评价切图切的切图质量的好坏评...文章激酶2016-01-086394浏览量用Markdown格式一份前端简历1. ...
  • 后端处理数据后,需要由前端展示出来,页面效果如下: 那前端文件应该放哪里,又该如何访问呢?我们在项目中导入一个存储前端信息的前端文件夹。 打开项目配置文件中的urls.py 文件 1、导入静态文件服务 from ...
  • 前端渲染就是利用ajax去拿取后端数据,前端页面结构脱离服务器,不需要服务器返回HTML,css,js等。 优点:结构清晰,各司其职 缺点,:页面加载速度依赖于JS的加载速度(与服务端渲染对比) node同构直出渲染方案: ...
  • 这里的前台和后台也叫前端后端。前台基本是能在页面上可看得见的错误,而后台是看不到的,如UI界面样式相关的错误不用判断肯定是前台的,用户数据问题基本是后台的。前台一般的工作是获取、加载、计算、渲染数据,...
  • 前端程序员在开发完页面后总是要对接口的,跟后端联调有时候还占用蛮大的时间的,那么你了解你和后端对的接口都是什么风格吗,你们公司接口设计的如何,你使用愉快吗?自己在Node服务时你遇到如何定义接口的问题...
  • 通常是后端工程师顺便前端页面。 <p><a name="34b9b83b"></a></p> 基于 AJAX 的前后端分离 <p>2005 年 AJAX 技术的正式提出,翻开了 Web 开发的新篇章。基于 AJAX,我们可以把 Web 分为前端和后端&#...
  • angularjs常见页面查询功能

    千次阅读 2016-09-28 11:40:47
    昨天学习了如何用mongoose写后端数据单一数据&组合数据的接口,今天便来讲讲如何根据后端写好的接口,来写前端数据接口,获取数据并进行查询。 查询出来的数据大概就是这样一个显示方式,查询也就是简单的input...
  • 在我们前端开发中经常遇到这样的事情,接口没有写好,只能写静态页面如何才能用很简单的方法模拟后端数据呢?mockjs就干了这件事,而且干的还挺好。 下面是我作为初学者的一些总结经验,期望和小伙伴们一起交流...
  • 有些公司的后端很强势,因此可能出现后端写好接口之后告诉前端去开发页面。也可能前端很强势,因此前端写好页面之后让后端去写接口。 这两种情况都不是我们希望见到的。这是因为如果我们自由开发一个接口,后端开发...
  • 后端程序员写前端苦手,设计网页更别提,遂咨询 V2 老哥,如何快速把网上模板扒到 vue 框架里面。老哥表示扒个几把,直接把网上扒下来的东西跑起来然后 iframe 塞到 vue 里就行了,我表示惊为天人于是从 html 模板...
  • 撸主很久之前的项目都是在前端页面一个个 if else 的,后来就用了一系列的前端校验框架,比如 layui iview 等等,几个样式属性就可以轻松搞定,的确是美滋滋。 后端验证 那么问题来了?前端已经验证了,后端还有必要...
  • 一 传统的开发模式前后端分离前我们的开发协作模式一般是这样的:前端写好静态的HTML页面交付给后端开发。静态页面可以本地开发,也无需考虑业务逻辑只需要实现View即可。后端使用模板引擎去套模板,同时内嵌一些...
  • 作为一名后端程序员,对前端的知识了解不深入,以前的都是很简陋的前端页面。layui的出现很的解决了后端程序员前端的问题,能快速上手。 题外话:我学习喜欢用斯科特杨的《如何高效学习》的模型,知识是从...
  • <div><p>前端基础技术体系是一个非常宽泛的概念,涉及到非常多的点,前端这个行业本身易入门难精通的一部分原因也是每一次的技术深入都需要技术广度上有提升,这些广度以前覆盖了HTTP、其他后端...
  • 由于之前接触@requestBody @requestParam 注解,测试都是基于swagger,自动生成了文档页面,也不需要自己重新请求,刚好,这次换了postman,测试接口都得自己一遍请求,@requestBody 尝试了几种body 都无果,...
  • 因为笔者最近负责项目的后端开发,所以笔者完之后就像这来测试我的这些接口是不是可用,但是又因为我们的项目是前后端分离的,所以不像自己之前那样只要发布到服务器上,就能直接利用页面进行测试,并且前端页面...
  • 前端包管理系统就有几个。所以任何一个库实现的loader都不得不去兼容基于多种模块化标准开发的模块。 <p>webpack同时提供了对CommonJS、AMD和ES6模块化标准的支持,对于非前三种标准开发的模块,...
  • 前言 不知道你在项目开发过程中有没有遇到以下场景: ...但是如果前端页面制作好了,后端接口还没有写好呢?或者如何让前端、后端各自做各自的事情,互不影响? 能做到下面这样是不是很好呢? 在进行完需求...

空空如也

空空如也

1 2 3 4 5 6
收藏数 114
精华内容 45
关键字:

后端如何写好前端页面